录制音频主要api
MediaRecorder.setAudioSource
MediaRecorder.setOutputFormat
MediaRecorder.setAudioEncoder
MediaRecorder.setOutputFile
MediaRecorder.prepare
MediaRecorder.start
MediaRecorder.stop
MediaRecorder.release
录制音频示例
1 import java.io.File; 2 import android.app.Activity; 3 import android.media.MediaPlayer; 4 import android.media.MediaRecorder; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.view.View.OnClickListener; 8 import android.widget.Button; 9 import android.widget.Toast; 10 11 /* 12 * 录制音频示例 13 */ 14 public class Main extends Activity implements OnClickListener 15 { 16 //录制音频 第1步,声明权限 17 /* 18 * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 19 * <uses-permission android:name="android.permission.RECORD_AUDIO" /> 20 */ 21 22 //录制音频 第2步,声明相关成员变量 23 private File recordAudioFile;//录制后生成的文件 24 private MediaRecorder mediaRecorder;//录制音频 25 private MediaPlayer mediaPlayer;//播放音频 26 @Override 27 public void onCreate(Bundle savedInstanceState) 28 { 29 super.onCreate(savedInstanceState); 30 setContentView(R.layout.main); 31 32 33 //录制音频 第3步,录制控制按钮 34 Button btnRecord = (Button)findViewById(R.id.btnRecord); 35 Button btnStop = (Button)findViewById(R.id.btnStop); 36 Button btnPlay = (Button)findViewById(R.id.btnPlay); 37 Button btnDelete = (Button)findViewById(R.id.btnDelete); 38 39 btnRecord.setOnClickListener(this); 40 btnStop.setOnClickListener(this); 41 btnPlay.setOnClickListener(this); 42 btnDelete.setOnClickListener(this); 43 44 } 45 /* 46 * 各按钮事件 47 */ 48 public void onClick(View view) 49 { 50 try { 51 switch (view.getId()) { 52 case R.id.btnRecord: 53 //录制音频 第4步,构造录制文件,这里用的是临时文件,注意android系统会对名字自动去重.不会覆盖. 54 recordAudioFile = File.createTempFile("record", ".amr"); 55 56 //录制音频 第5步,构造MediaRecorder 57 mediaRecorder = new MediaRecorder(); 58 59 //录制音频 第6步,设置各音频参数 60 //设置音频采集源 61 mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 62 //设置音频格式,android本身支持的格式少,可以将其它解码器移植到android上 63 mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 64 //设置音频编码 65 mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 66 //目录文件 67 mediaRecorder.setOutputFile(recordAudioFile.getAbsolutePath()); 68 69 //录制音频 第7步,开始prepare和录制, 70 mediaRecorder.prepare(); 71 mediaRecorder.start(); 72 73 //提示 74 Toast.makeText(this, "已经开始录制", Toast.LENGTH_LONG).show(); 75 76 break; 77 case R.id.btnStop: 78 79 //录制音频 第8步,停止录制.释放资源 80 if(mediaRecorder != null) 81 { 82 mediaRecorder.stop(); 83 mediaRecorder.release(); 84 mediaRecorder = null; 85 Toast.makeText(this,"停止录制", Toast.LENGTH_LONG).show(); 86 } 87 break; 88 case R.id.btnPlay: 89 90 //录制音频 第9步,播放录制好的音频文件. 91 mediaPlayer = new MediaPlayer(); 92 mediaPlayer.setDataSource(recordAudioFile.getAbsolutePath()); 93 mediaPlayer.prepare(); 94 mediaPlayer.start(); 95 break; 96 case R.id.btnDelete: 97 98 //录制音频 第10步,删除录制生成的文件 99 recordAudioFile.delete(); 100 break; 101 default: 102 break; 103 } 104 105 } catch (Exception e) { 106 } 107 } 108 }