2011-07-03 174 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音频数据,并使用循环将缓冲区写入任何您想要的内容。可能会允许进行重新编码和同时播放

祝你好运