2011-07-03 228 views
3

在我的應用程序中,我正在錄製來自麥克風的輸入,並且在某個點我正在播放聲音(而錄製仍在進行中)。 現在錄音機「停止」,以記錄(mrec.stop()仍然可以使用),這樣做的logcat的條目似乎是:同時錄製音頻和播放音頻

07-03 18:40:34.811: INFO/AudioHardwareALSA(2179): Output standby called!!. Turn off PCM device. 

我對兩款手機的測試,一個是三星Galaxy S一個是三星Galaxy 3.在Galaxy S上,一切都按預期工作(即錄製仍在進行)。 除了規格之外,兩款手機之間的區別在於Galaxy S擁有2.2.1和Galaxy 3 2.2 我想,解決方法是再次初始化媒體錄像機,但這會使應用程序結尾,這並不是通緝。

下面是詳細信息如何在媒體播放器和mediarecorder都設置:

void Init() 
    { 
     mp = MediaPlayer.create(getContext(), R.raw.pop); 
     mrec = new MediaRecorder(); 
     mrec.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mrec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     [..] 
     mrec.setOutputFile(audiofile.getAbsolutePath()); 
     mrec.prepare(); 
     mrec.start(); 
    } 

void Event() 
    { 
     mp.start(); 
    } 

爲什麼錄製 「停」?有沒有辦法阻止停車?這是期望的行爲嗎?我怎樣才能找出什麼是錯的?

任何提示將不勝感激。

+0

你有沒有得到任何解決方案?我想做同樣的事情! – QAMAR

+0

@Gerd如果您發現我們也請提供解決方案.. – 2013-05-15 10:16:57

回答

1

嘗試使用原生基本播放器和錄音機...這些都可以訪問徹底AudioTrack類和其他相關的API如音頻格式。使用它們,您可以以塊或緩衝區(顯式字節數組)記錄和播放PCM音頻數據,並使用循環將緩衝區寫入任何您想要的內容。可能會允許進行重新編碼和同時播放

祝你好運