我们可以使用MediaRecorder轻松完成音频录音,注意模拟器不支持,需要真机测试。具体步骤如下:
(1)创建一个android.media.MediaRecorder的新实例.
(2)使用MediaRecorder.setAudioSource()设置音频源,一般要使用MediaRecorder.AudioSource.MIC.
(3)使用MediaRecorder.setOutputFormat()设置输出文件的格式.
(4)使用MediaRecorder.setOutputFile()设置输出文件的名字.
(5)使用MediaRecorder.setAudioEncoder()设置音频编码.
(6)调用MediaRecorder 实例的MediaRecorder.prepare().
(7)MediaRecorder.start()开始获取音频.
(8)调用MediaRecorder.stop().停止.
(9)调用MediaRecorder.release(),就会立即释放资源.
一、设计界面
1、首先把record.png、stop.png两张图片复制到res/drawable-hdpi文件夹内。
2、布局文件
打开activity_main.xml文件。
输入以下代码:
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageButton
android:id="@+id/record"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/record" />
<ImageButton
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/stop" />
</LinearLayout>
二、程序文件
打开“src/com.genwoxue.recordaudio/MainActivity.java”文件。
然后输入以下代码:
package com.genwoxue.recordaudio;
import java.io.File;
import java.io.IOException;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.Toast;
import android.app.Activity;
public class MainActivity extends Activity {
private ImageButton btnRecord=null;
private ImageButton btnStop=null;
private MediaRecorder mRecorder=null;
private static final String TAG="RECORD";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnRecord=(ImageButton)super.findViewById(R.id.record);
btnStop=(ImageButton)super.findViewById(R.id.stop);
//开始录音
btnRecord.setOnClickListener(new OnClickListener(){
public void onClick(View v){
//判断外部存储卡是否存在
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Toast.makeText(getApplicationContext(), "读取失败,SD存储卡不存在!", Toast.LENGTH_LONG).show();
return;
}
//判断文件是否存在
String path=Environment.getExternalStorageDirectory().toString()
+File.separator
+"genwoxue"
+File.separator
+System.currentTimeMillis()
+".3gp";
mRecorder = new MediaRecorder(); //设置音源为Micphone
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //设置封装格式
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(path);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //设置编码格式
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(TAG, "prepare() failed");
}
mRecorder.start();
}
});
//停止录音
btnStop.setOnClickListener(new OnClickListener(){
public void onClick(View v){
mRecorder.stop();
mRecorder.release();
mRecorder = null;
}
});
}
}
三、运行结果
单击“录音”按钮,如右图所示,将会录下来,被保存成3gp格式的录音文件。