EMp3Record 讓 Android 錄音播放 更簡單

一、簡介

由於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();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章