今天介绍一下在Android中怎么录制音频,在Android中使用MediaRecorder来录制音频,步骤:
1、创建MediaRecorder对象。
2、调用MediaRecorder对象的setAudioSource()方法设置声音来源,一般传入MediaRecorder.AudioSource.MIC参数指定录制来在麦克风的声音。
3、调用MediaRecorder对象的setOutputFormat()设置所录制的音频文件的格式。
4、调用MediaRecorder对象的setAudioEncode()、setAudioEncodingBitRate(int bitRate)、setAudioSamplingRate(int samplingRate)设置所录制声音的编码格式、编码位率、采样率等,这些参数将可以控制所录制声音的品质、文件的大小。
5、调用MediaRecorder对象的setOutputFile(String path)方法设置录制音频文件的保存位置。
6、调用MediaRecorder的prepare()方法准备录制。
7、调用MediaRecorder对象的start()方法开始录制。
8、录制完成,调用MediaRecorder对象的stop()方法停止录制,并调用release()方法释放资源。
下面上个例子:
1 public class RecordSound extends Activity 2 implements OnClickListener 3 { 4 // 程序中的两个按钮 5 ImageButton record , stop; 6 // 系统的音频文件 7 File soundFile ; 8 MediaRecorder mRecorder; 9 @Override 10 public void onCreate(Bundle savedInstanceState) 11 { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.main); 14 // 获取程序界面中的两个按钮 15 record = (ImageButton) findViewById(R.id.record); 16 stop = (ImageButton) findViewById(R.id.stop); 17 // 为两个按钮的单击事件绑定监听器 18 record.setOnClickListener(this); 19 stop.setOnClickListener(this); 20 } 21 @Override 22 public void onDestroy() 23 { 24 if (soundFile != null && soundFile.exists()) 25 { 26 // 停止录音 27 mRecorder.stop(); 28 // 释放资源 29 mRecorder.release(); 30 mRecorder = null; 31 } 32 super.onDestroy(); 33 } 34 @Override 35 public void onClick(View source) 36 { 37 switch (source.getId()) 38 { 39 // 单击录音按钮 40 case R.id.record: 41 if (!Environment.getExternalStorageState().equals( 42 android.os.Environment.MEDIA_MOUNTED)) 43 { 44 Toast.makeText(RecordSound.this 45 , "SD卡不存在,请插入SD卡!" 46 , 5000) 47 .show(); 48 return; 49 } 50 try 51 { 52 // 创建保存录音的音频文件 53 soundFile = new File(Environment 54 .getExternalStorageDirectory() 55 .getCanonicalFile() + "/sound.amr"); 56 mRecorder = new MediaRecorder(); 57 // 设置录音的声音来源 58 mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 59 // 设置录制的声音的输出格式(必须在设置声音编码格式之前设置) 60 mRecorder.setOutputFormat(MediaRecorder 61 .OutputFormat.THREE_GPP); 62 // 设置声音编码的格式 63 mRecorder.setAudioEncoder(MediaRecorder 64 .AudioEncoder.AMR_NB); 65 mRecorder.setOutputFile(soundFile.getAbsolutePath()); 66 mRecorder.prepare(); 67 // 开始录音 68 mRecorder.start(); 69 } 70 catch (Exception e) 71 { 72 e.printStackTrace(); 73 } 74 break; 75 // 单击停止按钮 76 case R.id.stop: 77 if (soundFile != null && soundFile.exists()) 78 { 79 // 停止录音 80 mRecorder.stop(); 81 // 释放资源 82 mRecorder.release(); 83 mRecorder = null; 84 } 85 break; 86 } 87 } 88 }
备注:记得添加相应的权限:
1 <!-- 授予该程序录制声音的权限 --> 2 <uses-permission android:name="android.permission.RECORD_AUDIO"/>