Android MediaRecorder录制音频

  今天介绍一下在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"/>
原文地址:https://www.cnblogs.com/phj981805903/p/3297840.html