安卓實現錄音/播放/暫停/繼續的功能
阿新 • • 發佈:2018-12-30
目錄:
1、開始錄音
2、結束錄音
3、播放錄音
4、暫停/繼續
1、開始錄音
public void startSound(){ path= Environment.getExternalStorageDirectory().getAbsolutePath()+"/1video"; name="sound"; mMediaRecorder=new MediaRecorder(); //設定音訊格式 mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //設定音訊輸出後的儲存格式 mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); //設定音訊編碼格式 mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); //設定音訊通道號 mMediaRecorder.setAudioChannels(1); //設定錄音檔案的清晰度 mMediaRecorder.setAudioSamplingRate(44100); mMediaRecorder.setAudioEncodingBitRate(192000); Filefile=newFile(path); if(!file.exists()){ file.mkdirs(); } //指定一個輸出檔案 mMediaRecorder.setOutputFile(path+ File.separator+name+".mp4"); File file1=new File(path+File.separator+name+".mp4"); if(file1.exists()){ file1.delete(); } try{ mMediaRecorder.prepare(); mMediaRecorder.start(); mStartingTimeMillis=System.currentTimeMillis(); }catch(IOExceptione){ Log.e(TAG,"prepare()failed"); }}
2、結束錄音
public void stopSound(){
if(mMediaRecorder!=null){
mMediaRecorder.stop();
mMediaRecorder.release();
mMediaRecorder = null;
}
}
3、播放錄音
播放錄音資源使用的是MediaPlayer,其使用過程類似,也是經過prepare到start直至release和stop。
mMediaPlayer = new MediaPlayer(); try{ mMediaPlayer.setDataSource(file.getPath()); mMediaPlayer.prepare(); mMediaPlayer.setOnPreparedListener(newMediaPlayer.OnPreparedListener(){ @Override publicvoidonPrepared(MediaPlayermp){ mMediaPlayer.start(); } }); mMediaPlayer.setOnCompletionListener(newMediaPlayer.OnCompletionListener(){ @Override Public void onCompletion(MediaPlayermp){ if(mMediaPlayer.isPlaying()){ Log.i(TAG,"onCompletion:正在播放"); }else{ mMediaPlayer.release(); }}}); }catch(IOExceptione){ e.printStackTrace(); }
4、暫停/繼續
在點選暫停/繼續按鈕時,通過自定義一個變數判斷當前的播放狀態,然後通過mMediaPlayer執行對播放器的處理。
if(pause==0){//暫停狀態
BTN_pauseSound.setText("繼續播放");
mMediaPlayer.pause();
pause=1;
}else{//播放狀態
BTN_pauseSound.setText("暫停播放");
mMediaPlayer.start();
pause=0;
}