1、創建錄音對象
2、指定錄音設備(初始化狀態)
3、設置錄製音頻的碼率
4、設置錄製音頻的編碼格式
5、設置錄製音頻存放的位置
6、準備錄音(準備狀態)
7、開始錄音
8、停止錄音
9、釋放資源
錄製聲音的權限
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
錄製音頻的狀態圖
public class MediaRecorderTest extends Activity {
private MediaRecorder recorder;
private MediaPlayer player;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.recorder);
//1、創建錄音對象
recorder = new MediaRecorder();
//2、指定錄音設備(初始化狀態)
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//3、設置錄製音頻的碼率
recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
//4、設置錄製音頻的編碼格式
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
//5、設置錄製音頻存放的位置(這裏指定手機sdcard的根目錄下,文件名爲music.mp3)
recorder.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "music.mp3");
try {
//6、準備錄音(準備狀態)
recorder.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//對剛纔的錄音文件進行播放,創建播放音頻對象
player = new MediaPlayer();
try {
//設置要播放的音頻文件
player.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath() + "/music.mp3");
//準備播放音頻(準備狀態)
player.prepare();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void start(View view){
recorder.start();//7、開始錄音
Toast.makeText(this, "正在錄音", 0).show();
}
public void stop(View view){
recorder.stop();//8、停止錄音
Toast.makeText(this, "結束錄音,錄音文件以保存到sdcard。", 0).show();
recorder.release();//9、釋放資源
}
public void play(View view){
player.start();//開始播放剛纔錄製的音頻
}
}
xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="錄音"
android:onClick="start"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止"
android:onClick="stop" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="播放"
android:onClick="play" />
</LinearLayout>