知识使用才有价值,智能共享方显实力!
本讲内容:MediaRecoder 类 录音的使用
一、使用MediaRecorder录制音频实现步骤:
1、创建MediaRecorder对象
2、通过MediaRecoder对象的setAudioSource()方法设置录音的来源
3、通过MediaRecoder对象的setOutputFormat()设置输出格式
4、通过MediaRecoder对象的setAudioEncoder()、setAudioEncodeingBitRate(int bitRate)、setAudioAudioSamling(int samplingRate)设置所录制的声音的编码格式、编码位率、采样率
5、通过MediaRecorder对象的setOutputFile(String path)方法设置录制的音频文件的保存位置
6、调用MeidaRecorder对象的prepare()做预期准备录制
7、调用MediaRecorder对象的start()开始录制声音
我们通过一个例子感受一下,代码的讲解都写在注释里了
下面是MainActivity.java主界面文件:
public class MainActivity extends Activity implements OnClickListener {
private Button start;
private Button stop;
private MediaRecorder mediaRecorder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
start.setOnClickListener(this);
stop.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
// 先检测下是否含有SDCard
if (!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
Toast.makeText(MainActivity.this, "SD卡不存在,请插入SD卡",
Toast.LENGTH_LONG).show();
return;
}
// 创建音频输出的文件路径
File file = new File("/sdcard/"+ "dan"
+ new DateFormat().format("yyyyMMdd_hhmmss",
Calendar.getInstance(Locale.CHINA))+ ".amr");
Toast.makeText(getApplicationContext(),
"正在录音,录音文件在" + file.getAbsolutePath(), Toast.LENGTH_LONG).show();
// 创建录音对象
mediaRecorder = new MediaRecorder();
// 从麦克风源进行录音
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
// 设置录制的声音输出格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
// 设置声音的编码格式
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
// 设置录音的输出(保存)的文件路径
mediaRecorder.setOutputFile(file.getAbsolutePath());
try {
// 创建文件
file.createNewFile();
// 准备录制
mediaRecorder.prepare();
} catch (Exception e) {
// TODO: handle exception
}
// 开始录制
mediaRecorder.start();
start.setText("录音中……");
break;
case R.id.stop:
if (mediaRecorder != null) {
mediaRecorder.stop();
// 释放资源
mediaRecorder.release();
mediaRecorder = null;
start.setText("录音");
Toast.makeText(getApplicationContext(), "录音完毕",Toast.LENGTH_LONG).show();
}
break;
}
}
@Override
protected void onDestroy() {// 更加完美可以写
if (mediaRecorder != null) {
mediaRecorder.stop();
// 释放资源
mediaRecorder.release();
mediaRecorder = null;
start.setText("录音");
Toast.makeText(getApplicationContext(), "录音完毕", Toast.LENGTH_LONG).show();
}
super.onDestroy();
}
}
因为录音和写存储卡都需要权限声明,在AndroidManifest.xml注册:
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
录音文件在存储卡的根目录几个以dan开头的amr文件
本讲就到这里,Take your time and enjoy it
原文:http://blog.csdn.net/liguojin1230/article/details/41621835