原文:http://www.yiibai.com/android/android_audio_capture.html
Android有一个内置的麦克风,通过它可以捕获音频和存储,或在手机进行播放。有很多方法可以做到这一点,但最常见的方法是通过MediaRecorder类。
Android提供MediaRecorder类录制音频或视频。为了使用MediaRecorder类,首先创建MediaRecorder类的一个实例。其语法如下给出。
MediaRecorder myAudioRecorder = new MediaRecorder();
现在设置源,输出编码格式和输出文件。下面的语法给出。
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB); myAudioRecorder.setOutputFile(outputFile);
指定音频源和格式以及它的输出文件之后,我们就可以调用两种基本方法制备,开始记录音频。
myAudioRecorder.prepare();
myAudioRecorder.start();
除了这些方法,还有其他的MediaRecorder类可以更好地控制音频和视频录制列出的方法。
Sr.No | 方法及说明 |
---|---|
1 | setAudioSource() 这个方法规定的音频源要被记录 |
2 | setVideoSource() 这个方法规定视频源将要记录 |
3 | setOutputFormat() 该方法规定了音频格式中的音频将被存储 |
4 | setAudioEncoder() 此方法指定要使用的音频编码器 |
5 | setOutputFile() 该方法配置文件路径到其中的记录的音频将被存储 |
6 | stop() 此方法停止记录处理 |
7 | release() 当需要在记录器实例这种方法应被调用 |
例子
这个例子提供了MediaRecorder类捕获音频的示范,MediaPlayer类来播放录制的音频。
为了试验这个例子,需要在实际设备上运行此例子。
Steps | 描述 |
---|---|
1 | 使用Android Studio创建Android应用程序,并将其命名为:AudioCapture,创建这个项目,确保目标SDK编译在Android SDK的最新版本或使用更高级别的API。 |
2 | 修改src/MainActivity.java 文件添加AudioCapture代码 |
3 | 如果修改所需的布局XML文件res/layout/activity_main.xml 添加GUI组件 |
4 | 修改 res/values/string.xml文件,并添加必要的字符串组成部分 |
5 | 修改 AndroidManifest.xml 添加必要的权限。 |
6 | 运行应用程序并选择运行Android设备,并在其上安装的应用和验证结果。 |
这里是 src/com.yiibai.audiocapture/MainActivity.java 内容
package com.example.audiocapture; import java.io.File; import java.io.IOException; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private MediaRecorder myAudioRecorder; private String outputFile = null; private Button start,stop,play; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start = (Button)findViewById(R.id.button1); stop = (Button)findViewById(R.id.button2); play = (Button)findViewById(R.id.button3); stop.setEnabled(false); play.setEnabled(false); outputFile = Environment.getExternalStorageDirectory(). getAbsolutePath() + "/myrecording.3gp";; myAudioRecorder = new MediaRecorder(); myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC