2012-08-02 135 views
1

我试图建立应用程序,它记录了从麦克风为后来的音频处理过程中静音。从麦克风录制的音频语音通话

一切工作相当好,除了以下问题: 在语音通话(进出)期间录制的文件没有音频数据,它只包含NULL。

我使用AudioRecorder和MediaRecorder,都有同样的问题。 问题是,如果这是正常的API行为或我错过了什么?

这里一些额外的信息: 权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 

SDK:的minSdkVersion = “9” targetSdkVersion = “15”

我在Nexus S的测试我的应用程序Jelly Bean系统。

在此先感谢!

PS如果有人需要更多的具体细节,请让我知道。

编辑

OK,所有的回答表明,这是一种正常的行为,但我仍然感到困惑,因为我可以找到很多的应用程序,记录语音呼叫,使用麦克风。录制语音通话不是我的意图,但我认为即使在语音通话期间我也可以使用麦克风。 有什么建议吗?

编辑

我只是测试上的Galaxy S姜饼的应用和它的工作!现在我真的很困惑,并开始理解什么词“切分”是指...

+0

这是正常的。您无法录制,因为电话会独占控制麦克风。 – Kaediil 2012-08-02 11:35:22

+0

你可以命名一些可以记录呼叫的应用吗? – nandeesh 2012-08-03 13:09:00

+0

只是在谷歌播放与“记录呼叫”关键字搜索。有4星评级和数千次下载的应用程序,这意味着至少这部分可能。 – VadimK 2012-08-03 13:39:28

回答

1

我不会把这种正常的,但你在这里输入特定于平台的行为。在语音通话过程中使用AudioSource.MIC进行录音可以在某些设备上使用,但在其他设备上不能使用。

仅举,我已经对为什么这个功能可能已经禁用碰上自己的几个原因:

  • 有些平台只支持单一的采样率在任何特定时间捕捉麦克风音频。而且,由于语音通话比别的优先(这手机毕竟)和语音通话需要8或16 kHz采样率,约当你有一个正在进行中的记录进行语音通话的开始可能是什么做的决定简单地静音录音,以便当您的应用程序认为它获得了44.1 kHz的频率时,您的录音不会被8 kHz数据填充。

  • 如果您在语音通话有些平台可能会停止从麦克风传送音频数据,有效地屏蔽了语音通话过程中上行留下记录空闲(停止,但没有公布)。为了避免这种情况,供应商可能会认定语音通话期间的录音实际上不会路由到任何输入设备,而只是填充零。

声明:我没有与Nexus S合作过,所以我不知道在特定设备上是什么原因。

+0

谢谢,帮助我理解为什么发生这种情况。 – VadimK 2012-08-06 14:21:47

0

我认为这是正常的行为,音频数据,同时呼叫接通绝不会通过应用处理器的Android运行进行处理。通常音频芯片组会将其切换为来自Modem的流。

+0

谢谢。请参阅我的问题的编辑部分。 – VadimK 2012-08-03 12:29:50

0

从理论上讲,你可以从调用本身得到一个feed(http://stackoverflow.com/questions/4194342/how-can-i-record-voice-and-record-call-in-android),但大多数制造商显然不支持这一点。

+0

谢谢。请参阅我的问题的编辑部分。 – VadimK 2012-08-03 12:30:16