MediaRecord简单介绍
手机为我们提供了麦克风硬件,我们可以通过麦克风实现音频的录制。这里Android为我们提供了MedioRecorder来录制音频与视频。下图就是MediaRecorder的状态转换图。
音频状态转换
reset()–setAudioSource()设置声音来源MIC–setOutputFormat()设置所录制的音频文件的格式–setAudioEncoder()设置所录制声音的编码格式–setOutputFile()设置录制音频文件的保存位置–prepare()–start()–stop()–reset()–release()释放资源
视频状态转换类似,可以直接看图
音频状态转换
reset()–setAudioSource()设置声音来源MIC–setOutputFormat()设置所录制的音频文件的格式–setAudioEncoder()设置所录制声音的编码格式–setOutputFile()设置录制音频文件的保存位置–prepare()–start()–stop()–reset()–release()释放资源
视频状态转换类似,可以直接看图
音频录制
首先建立一个MediaRecorder的对象,然后设置音频来源(一般是麦克风)、设置音频的格式(一般是THREE_GPP)、设置编码格式(一般为AMR_NB)、设置生成文件的地址和文件名(注意有‘/’和后缀名)。代码如下:
private Button mButtonStart;
private Button mButtonStop;
private MediaRecorder mediaRecorder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButtonStart= (Button) findViewById(R.id.button_start_recorder);
mButtonStop= (Button) findViewById(R.id.button_end_recorder);
mButtonStart.setOnClickListener(this);
mButtonStop.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button_start_recorder:
mediaRecorder=new MediaRecorder();
//设置声音的来源
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置音频的格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
//设置编码格式
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// mediaRecorder.setOutputFile( "/storage/sdcard0/aaa.3gp");
//设置生成文件的地址
mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory()+"/bbb.3gp");
try {
mediaRecorder.prepare(); //准备录音
mediaRecorder.start();//开始录音
} catch (IOException e) {
e.printStackTrace();
}
break;
case R.id.button_end_recorder:
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();
break;
}
}
注意:记得添加权限
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>