سلام دوستان گرامی ف حال تون که خوبه؟ دراین قسمت به اموزش دیالوگ ها میپردازیم .اندروید دارای یک میکروفن داخلی می باشد که از طریق آن می توانید صدا را گرفته و ذخیره کنید و یا در تلفن خود اجرا کنید. راههای زیادی برای انجام این کار وجود دارد ما متداول ترین آن از طریق گروه MediaRecorder می باشد.

اندروید گروه MediaRecorder را برای ضبط صدا یا فیلم ارائه می دهد. برای استفاده از گروه MediaRecorder شما در ابتدا یک نمونه ازآن گروه ایجاد خواهید کرد. ترکیب آن در زیر ارائه شده است:
?
۱

MediaRecorder myAudioRecorder = new MediaRecorder();

اکنون شما منبع، خروجی، فرمت کدگذاری و فایل خروجی را تنظیمی کنید. ترکیب آنها در زیر ارائه شده است .
?
۱
۲
۳
۴

myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setOutputFile(outputFile);

پس از تعیین منبع صدا، فرمت و فایل خروجی آن می توانیم دو روش اصلی را فراخوانده، آماده کرده و آغاز به ضبط صدا کنیم.
?
۱
۲

myAudioRecorder.prepare();
myAudioRecorder.start();

علاوه بر این روش ها، روشهای دیگری برای ضبط صدا در گروه MediaRecorder وجود دارند که به شما اجازه می دهند کنترل بیشتری بر روی ضبط صدا و فیلم داشته باشید.
Method & description
Sr.No
setAudioSource() این روش منبع صدا را که باید ضبط شود، مشخص می کند.
۱
setVideoSource() این روش منبع فیلم را که باید ضبط شود، مشخص می کند.
۲
setOutputFormat() این روش فرمت ذخیره صدا را مشخص می کند.
۳
setAudioEncoder() این روش رمزگذار صدا را که باید مورد استفاده قرار بگیرد، مشخص می کند.
۴
setOutputFile() این روش مسیر ذخیره ی صدای ضبط شده را تنظیم می کند.
۵
stop() این روش فرایند ضبط را متوقف می کند.
۶
release() این روش هنگامی که نمونه ی ضبط کننده لازم باشد، باید فراخوانده شود.
۶

مثال:

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

در اینجا محتوای src/com.example.audiocapture/MainActivity.java را مشاهده می کنید.
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
۱۷
۱۸
۱۹
۲۰
۲۱
۲۲
۲۳
۲۴
۲۵
۲۶
۲۷
۲۸
۲۹
۳۰
۳۱
۳۲
۳۳
۳۴
۳۵
۳۶
۳۷
۳۸
۳۹
۴۰
۴۱
۴۲
۴۳
۴۴
۴۵
۴۶
۴۷
۴۸
۴۹
۵۰
۵۱
۵۲
۵۳
۵۴
۵۵
۵۶
۵۷
۵۸
۵۹
۶۰
۶۱
۶۲
۶۳
۶۴
۶۵
۶۶
۶۷
۶۸
۶۹
۷۰
۷۱
۷۲

package com.example.audiocapture;
import java.io.File;
import java.io.IOException;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private MediaRecorder myAudioRecorder;
private String outputFile = null;
private Button start,stop,play;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button)findViewById(R.id.button1);
stop = (Button)findViewById(R.id.button2);
play = (Button)findViewById(R.id.button3);
stop.setEnabled(false);
play.setEnabled(false);
outputFile = Environment.getExternalStorageDirectory().
getAbsolutePath() + “/myrecording.3gp”;;
myAudioRecorder = new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setOutputFile(outputFile);
}
public void start(View view){
try {
myAudioRecorder.prepare();
myAudioRecorder.start();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
start.setEnabled(false);
stop.setEnabled(true);
Toast.makeText(getApplicationContext(), “Recording started”, Toast.LENGTH_LONG).show();
}
public void stop(View view){
myAudioRecorder.stop();
myAudioRecorder.release();
myAudioRecorder = null;
stop.setEnabled(false);
play.setEnabled(true);
Toast.makeText(getApplicationContext(), “Audio recorded successfully”,
Toast.LENGTH_LONG).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void play(View view) throws IllegalArgumentException,
SecurityException, IllegalStateException, IOException{
MediaPlayer m = new MediaPlayer();
m.setDataSource(outputFile);
m.prepare();
m.start();
Toast.makeText(getApplicationContext(), “Playing audio”, Toast.LENGTH_LONG).show();
}
}

در اینجا محتوای activity_main.xml را مشاهده می کنید.
?
۱
۲
۳
۴
۵
۶
۷
۸

‎ ‎ ‎
‎ ‎ ‎ ‎
‎ ‎ ‎

در اینجا محتوای Strings.xml را مشاهده می کنید.
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱

‎‎
‎ AudioCapture‎
‎ Settings‎
‎ Hello world!‎
‎ Android Audio Recording ‎Application‎
‎ start‎
‎ stop‎
‎ play‎

در اینجا محتوای AndroidManifest.xml را مشاهده می کنید.
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴


‎‎
‎ ‎
‎ ‎
‎ ‎



‎ ‎
‎ ‎

‎ ‎

اجازه دهید برنامه ی AudioCapture شما را اجرا کنیم. فرض می کنیم که دستگاه موبایل خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse یکی از فایل های فعالیت برنامه ی خود را باز کرده و روی آیکن Run از تولبار کلیک کنید. قبل از شروع برنامه ی شما، Eclipse پنجره ی زیر را برای انتخاب گزینه، جایی که برنامه ی شما اجرا می شود، نمایش خواهد داد.
آموزش ضبط صدا Media Recording در اندروید

دستگاه موبایل خود را به عنوان یک گزینه انتخاب کنید و سپس آن را چک کنید که پنجره ی زیر را نمایش می دهد.
آموزش ضبط صدا Media Recording در اندروید

اکنون شما دکمه های stop و play را می بینید که به طور پیش فرض غیرفعال هستند. فقط کافیست روی دکمه ی start کلیک کنید، که ضبط صدا آغاز می شود و پس از آن صفحه ی زیر را نمایش خواهد داد.
آموزش ضبط صدا Media Recording در اندروید

اکنون فقط روی دکمه ی stop بزنید و برنامه صدای ضبط شده را روی حافظه ی خارجی ذخیره خواهد کرد. وقتی که روی دکمه ی stop کلیک کنید صفحه ی زیر نمایش داده خواهد شد.
آموزش ضبط صدا Media Recording در اندروید

اکنون روی دکمه ی play بزنید، که پس از آن صدای ضبط شده روی دستگاه اجرا می شود و در هنگام اجرا پیغام زیر نمایش داده خواهد شد.