MediaRecorder音頻錄製步驟:
1 建立MediaRecorder對象
MediaRecorder mr=new MediaRecorder();
2 設定錄音的來源
mr.setAudioSource(MediaRecorder.AudioSource.MIC);//一般使用麥克風
3 設定輸出格式
mr.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
4 設定編碼格式
mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
設定編碼位率
//mr.setAudioEncodeingBitRate(int bitRate);
設定採樣率
//mr.setAudioAudioSamling(int samplingRate);
5 設定儲存位置
mr.setOutputFile("/sdcard/recorder.amr");
6 錄製準備
mr.prepare();
7 開始錄製
mr.start();
錄製完成之後
8 停止錄製
mr.stop();
9 釋放資源
mr.release();
MediaPlayer音頻播放步驟:
1 建立MediaPlayer對象MediaPlayer mp=new MediaPlayer();
或者直接建立制定檔案
MediaPlayer mp=MediaPlayer.create(context,R.raw.music);//如果採用此方法建立則可以跳過2、3兩個步驟
2 設定播放檔案
mp.setDataSource("/sdcard/recorder.amr");
//參數可以為檔案路徑("/sdcard/music.mp3")、網路URL("http://www.../music.mp3")、res/raw下面的音頻檔案(context,R.raw.music)等
3 播放準備(同步)
mp.prepare();
播放準備(非同步)mp.prepareAsunc();
4 開始播放
mp.start();
暫停播放//mp.pause();
5 停止播放
mp.stop();
6 釋放資源
mp.release();
TIP:
定位 mp.seekTo(int);
取得當前位置
mp.getCurrentPosition();
取得總長 mp.getDuration();
當需要用播放定位時,調用mp.seekTo(int position)函數不知道position應該是多少。由於FPS的不同,給固定的int值很不準確。
於是乎,想到了用百分比來確定位置。我們可以調用mp.getDuration();函數來擷取該資源的總長度,該長度官方定義為毫秒但是應該不準確。不過它的值與seekTo函數中的int是對應的。
比如要定義到15%的位置:
int position=(int)(mp.getDuration()*0.15);
mp.seekTo(position);
mp.start();