2015-06-10 74 views
2

是否可以修改MediaRecorder來源以允許暫停/恢復記錄?我認爲修改這個班是不可能的,但最近我被告知它是這樣的。我的問題是,爲什麼我要修改MediaRecorder類而不擴展它,然後編寫額外的邏輯?基本邏輯我想補充的暫停/恢復記錄會去這樣的事情,如何修改MediaRecorder來源以允許暫停/恢復記錄

public void pauseRecording() 
{ 
    media_recorder.stop(); 
    media_recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    media_recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
    media_recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
    FileOutputStream paused_file = new FileOutputStream(file_path); 
    media_recorder.setOutputFile(paused_file.getFD()); 
} 

public void resumeRecording() 
{ 
    media_recorder.prepare(); 
    media_recorder.start(); 
} 

這樣做的問題是,預覽閃爍。所以我基本上有三個問題。源代碼是否可以直接修改?我的擴展MediaRecorder方法有什麼問題嗎?我怎樣才能更新我的暫停/恢復到沒有預覽閃爍?提前致謝。

回答

1
  1. 您可以修改源代碼,問題是您無法將框架源編譯爲您的apk並在運行時替換框架。所以不要這樣做。
  2. 你用一個文件來記錄每一個片段嗎?你需要記錄每一個分離的文件,或「預覽閃爍」發生。
  3. 如果您想要將所有片段聯繫到一個文件,您需要以PCM格式錄製(或者您需要自己處理文件頭),並確保揚聲器在每個片段之前和之後添加靜音。