.

روش های زیادی برای ضبط صدا و ویدئو در اندروید وجود دارد ولی ساده ترین و شاید بتوان گفت استاندارد ترین روش استفاده از  کلاس MediaRecorder است ، در این آموزش با نحوه ضبط صدا آشنا می شویم و ضبط ویدئو را به آموزش دیگری موکول می کنیم . قبل از ادامه این آموزش باید موارد زیر را مد نظر قرار دهید

  • برنامه را روی دستگاه واقعی تست کنید
  • دستگاه مورد نظر باید قابلیت لازم برای ضبط صدا را داشته باشد.

برای استفاده از MediaRecorder باید یک شی از این کلاس مانند خط زیر در برنامه ایجاد کنیم.

MediaRecorder myRecorder=newMediaRecorder();

علاوه بر این باید موارد زیر را نیز مشخص کنیم.

  • منبع ورودی
  • فرمت خروجی
  • Encoder
  • فایل خروجی

به عنوان مثال چهار مورد فوق را می توانیم به شکل زیر مشخص کنیم.


		myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
		myRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
		myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
		
		myRecorder.setOutputFile(myFile);

برای شروع عملیات ضبط ابتدا متد prepare و سپس start را فراخوانی می کنیم. برای پایان عملیات ضبط نیز ابتدا متد stop و سپس متد release را فراخوانی می کنیم.

برای اینکه با تمام موارد فوق به صورت عملی آشنا شوید اجازه دهید مانند همیشه یک برنامه ساده بنویسیم.

در این آموزش می خواهیم یک برنامه ساده بنویسیم که سه عمل زیر را انجام می دهد.

  • صدا را ضبط می کند.
  • عملیات ضبط را متوقف می کند.
  • فایل خروجی ضبط شده را با استفاده از کلاس MediaPlayer پخش می کند.

مانند همیشه یک پروژه اندرویدی ساده ایجاد می کنیم.

چون می خواهیم صدا را ضبط کنیم و نتیجه را نیز در یک فایل ذخیره کنیم به دو مجوز زیر نیاز داریم ، لذا این دو مجوز را به فایل AndroidManifest.xml اضافه می کنیم.

android:name="android.permission.WRITE_EXTERNAL_STORAGE">android:name="android.permission.RECORD_AUDIO">

فایل xml اصلی برنامه را به شکل زیر طراحی می کنیم که تنها شامل سه دکمه عملیاتی و یک متن ثابت است.

xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent">android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="Safecomp.ir"android:textSize="30sp"/>android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true">android:id="@+id/record"android:layout_width="0px"android:layout_weight="1"android:layout_height="wrap_content"android:text="Record"/>android:id="@+id/stop"android:layout_width="0px"android:layout_weight="1"android:layout_height="wrap_content"android:text="Stop"/>android:id="@+id/play"android:layout_width="0px"android:layout_weight="1"android:layout_height="wrap_content"android:text="Play"/>

فایل جاوایی برنامه با توجه به توضیحات قبلی بسیار ساده و قابل درک خواهد بود.

package sap.ir.soundrecorder;import java.io.File;import android.app.Activity;import android.media.MediaPlayer;import android.media.MediaRecorder;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.widget.Button;publicclassMainActivity extends Activity{String myFile =null;MediaRecorder myRecorder;Button record, stop, play;@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		record =(Button) findViewById(R.id.record);
		stop =(Button) findViewById(R.id.stop);
		play =(Button) findViewById(R.id.play);

		stop.setEnabled(false);
		play.setEnabled(false);File outFolder =newFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/sound_recorder");if(!outFolder.exists())
			outFolder.mkdir();

		myFile = outFolder.getAbsolutePath()+"/sound.3gp";

		record.setOnClickListener(newView.OnClickListener(){@Overridepublicvoid onClick(View arg0){
				recordAudio();}});
		stop.setOnClickListener(newView.OnClickListener(){@Overridepublicvoid onClick(View arg0){
				stopAudio();}});
		play.setOnClickListener(newView.OnClickListener(){@Overridepublicvoid onClick(View arg0){
				playAudio();}});}void initAudio(){
		myRecorder =newMediaRecorder();
		myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
		myRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
		myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
		myRecorder.setOutputFile(myFile);}void recordAudio(){

		initAudio();

		record.setEnabled(false);
		play.setEnabled(false);
		stop.setEnabled(true);try{
			myRecorder.prepare();
			myRecorder.start();}catch(Exception e){}}void stopAudio(){
		stop.setEnabled(false);
		record.setEnabled(true);
		play.setEnabled(true);try{
			myRecorder.stop();
			myRecorder.release();}catch(Exception e){}}void playAudio(){MediaPlayer mp =newMediaPlayer();try{
			mp.setDataSource(myFile);
			mp.prepare();
			mp.start();}catch(Exception e){}}}

تصویر برنامه :