示例如下,在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:

  1. Create a new instance of android.media.MediaRecorder.
  2. Set the audio source using MediaRecorder.setAudioSource(). You will probably want to use MediaRecorder.AudioSource.MIC.
  3. Set output file format using MediaRecorder.setOutputFormat().
  4. Set output file name using MediaRecorder.setOutputFile().
  5. Set the audio encoder using MediaRecorder.setAudioEncoder().
  6. Call MediaRecorder.prepare()on the MediaRecorder instance.
  7. To start audio capture, call MediaRecorder.start().
  8. To stop audio capture, call MediaRecorder.stop().
  9. When you are done with the MediaRecorder instance, call MediaRecorder.release() on it. Calling MediaRecorder.release() is always recommended to free the resource immediately.
posted on 2012-02-29 09:53  snowdrop  阅读(517)  评论(0编辑  收藏  举报