示例如下,在main.xml中加几个button
package com.record.audio.test1;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Button;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
public class RecordAudioTest1Activity extends Activity {
/** Called when the activity is first created. */
private Button recordStart;
private Button recordStop;
private Button playStart;
private Button playStop;
private String TAG = "RecordAudioTest1Activity";
private MediaRecorder mRecorder;
private String mFileName;
private String mFileAbsoluteName;
private int i=1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
recordStart = (Button) findViewById(R.id.recordStart);
recordStop = (Button) findViewById(R.id.recordStop);
playStart = (Button) findViewById(R.id.playStart);
playStop = (Button) findViewById(R.id.playStop);
recordStart.setOnClickListener(myListener);
recordStop.setOnClickListener(myListener);
playStart.setOnClickListener(myListener);
playStop.setOnClickListener(myListener);
mFileAbsoluteName = Environment.getExternalStorageDirectory().getAbsolutePath()+"/srxtest";
Log.v(TAG, "$$$$onCreate");
}
OnClickListener myListener = new OnClickListener() {
public void onClick(View v) {
switch (v.getId()) {
case R.id.recordStart:
startRecord();
break;
case R.id.recordStop:
stopRecord();
break;
case R.id.playStart://播放与暂停播放暂时未做
startPlay();
break;
case R.id.playStop:
stopPlay();
break;
default:
break;
}
}
};
public void getFileName() {
// 获取路径+文件名
Log.v(TAG,"$$$$11111$mFileName=="+mFileName);
mFileName =mFileAbsoluteName+"/audiorecordtest1susu"+"_"+i+".3gp";
Log.v(TAG,"$$$$$2222mFileName=="+mFileName);
i++;
}
public void startRecord() {
getFileName();
mRecorder = new MediaRecorder();
//以下set看API即可
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
try {
mRecorder.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mRecorder.start();
Log.v(TAG, "$$$$startRecord");
}
public void stopRecord() {
//stop的时候要release,release的时候还要release
mRecorder.stop();
//release,并让object=null
mRecorder.release();
mRecorder = null;
Log.v(TAG, "$$$$stopRecord");
}
public void startPlay() {
}
public void stopPlay() {
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
if (mRecorder != null) {
mRecorder.release();// when should release?pause() or stop()?
mRecorder = null;
Log.v(TAG, "$$$$onStop");
}
}
}
此例未做播放,需要去sd卡下面的响应目录去查看并播放刚才录制的audio
API上说明
Performing Audio Capture
Audio capture from the device is a bit more complicated than audio and video playback, but still fairly simple:
- Create a new instance of
android.media.MediaRecorder
. - Set the audio source using
MediaRecorder.setAudioSource()
. You will probably want to useMediaRecorder.AudioSource.MIC
. - Set output file format using
MediaRecorder.setOutputFormat()
. - Set output file name using
MediaRecorder.setOutputFile()
. - Set the audio encoder using
MediaRecorder.setAudioEncoder()
. - Call
MediaRecorder.prepare()
on the MediaRecorder instance. - To start audio capture, call
MediaRecorder.start()
. - To stop audio capture, call
MediaRecorder.stop()
. - When you are done with the MediaRecorder instance, call
MediaRecorder.release()
on it. CallingMediaRecorder.release()
is always recommended to free the resource immediately.