一、簡介
由於Android原生AudioRecord的錄製結果是PCM文件,在其他端不通用,所以需要將錄製好的PCM轉換成Mp3通用格式。
所以EMp3Record基於Lame的實現實時錄音轉碼輸出到文件,同時封裝了媒體播放器,幫助開發者播放音頻。
二、使用 MP3Recorder 錄音
2.1 初始化
//參數爲輸出的文件路徑
mp3Recorder = new MP3Recorder(currentAudioFile);
mp3Recorder.setOnRecordListener(onRecordListener);
其中OnRecordListener爲MP3Recorder的內部接口方便錄音狀態改變時進行回調:
MP3Recorder.OnRecordListener onRecordListener = new MP3Recorder.OnRecordListener() {
@Override
public void onStart() {
}
public void onRecording(int mVolumeDb,int mVolume);
@Override
public void onStop(File file, long l) {
handler.sendEmptyMessage(HANDLER_RESET_RECORD_VIEW);
if (isCancelRecord) {
file.delete();
} else {
if (l < 1000 || file.length() < 1536) {
ToastUtils.showMessage(getContext(), getResources().getString(R.string.short_time));
file.delete();
} else {
sendMediaMessage(file.getAbsolutePath(), l);
}
}
}
};
public void onRecording(int mVolumeDb,int mVolume) 返回的是錄音是的音量大小,方便動畫的實現。
public void onStop(File file, long l) 返回的參數是錄音文件,和錄音時長。
2.2 開始和結束錄音
開始錄音:MP3Recorder#public void start(final long maxDuration)
其中設置參數爲最大錄音時長。
參考樣例:
currentAudioFile = new File(ChatFileManager.cacheDirPathAudio + File.separator + System.currentTimeMillis() + ".mp3");
mp3Recorder.setFile(currentAudioFile);
mp3Recorder.start(60 * 1000);
結束錄音:mp3Recorder.stop();
三、使用 MediaPlayerHepler 播放音頻
3.1 初始化
mediaPlayerHepler = new MediaPlayerHepler(getActivity());
mediaPlayerHepler.setOnCompleteListener(completionListener);
3.2 註冊播放完成時的回調監聽
MediaPlayer.OnCompletionListener completionListener = new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (mediaPlayerHepler != null) {
mediaPlayerHepler.stop();
}
}
};
3.3 播放音頻
MediaPlayerHepler#start(String filePath);
3.4 暫停播放
MediaPlayerHepler#pause();
3.5 停止播放
MediaPlayerHepler#stop();