Java 在语音通话过程中,从麦克风录制的音频将静音
我正在尝试构建一个应用程序,该应用程序记录来自麦克风的音频,以供以后处理 除以下问题外,所有操作都相当正常: 在语音通话(输入和输出)期间,录制的文件没有音频数据,它只包含空值 我使用的是AudioRecorder和MediaRecorder,两者都有相同的问题。 问题是这是正常的API行为还是我遗漏了什么 以下是一些附加信息: 权限:Java 在语音通话过程中,从麦克风录制的音频将静音,java,android,audio-recording,audiorecord,Java,Android,Audio Recording,Audiorecord,我正在尝试构建一个应用程序,该应用程序记录来自麦克风的音频,以供以后处理 除以下问题外,所有操作都相当正常: 在语音通话(输入和输出)期间,录制的文件没有音频数据,它只包含空值 我使用的是AudioRecorder和MediaRecorder,两者都有相同的问题。 问题是这是正常的API行为还是我遗漏了什么 以下是一些附加信息: 权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&g
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
SDK:minSdkVersion=“9”targetSdkVersion=“15”
我正在用Jelly Bean在Nexus S上测试我的应用程序
提前谢谢
如果有人需要更具体的细节,请告诉我
编辑
好的,所有的答案都表明这是一种正常的行为,但我仍然感到困惑,因为我可以找到很多使用麦克风录制语音通话的应用程序。录制语音通话不是我的本意,但我认为即使在语音通话期间,我也可以使用麦克风。
有什么建议吗
编辑
我刚刚在Galaxy S姜饼上测试了这个应用程序,它成功了!现在我真的很困惑,开始理解“分段”这个词的意思了…我相信这是正常的行为,连接呼叫时的音频数据永远不会通过运行Android的应用程序处理器进行处理。通常,音频芯片组会将其切换到来自调制解调器的流。理论上,您可以从呼叫本身获得一个提要(http://stackoverflow.com/questions/4194342/how-can-i-record-voice-and-record-call-in-android),但大多数制造商显然不支持这一点。我不认为这是正常的,但您在这里输入的是特定于平台的行为。在语音通话过程中使用
AudioSource.MIC
录音在某些设备上有效,但在其他设备上无效
仅举几个我自己遇到的原因,说明为什么此功能可能已被禁用:
- 某些平台仅支持在任何给定时间以单个采样率捕获麦克风音频。由于语音通话优先于任何其他通话(毕竟这是一部手机),并且语音通话需要8或16 kHz的采样率,因此,当语音通话开始时,如果您正在进行录音,您可以简单地将录音静音,例如,当你的应用程序认为你的录音会达到44.1 kHz时,你的录音不会充满8 kHz的数据
- 如果您在语音通话期间让录音机处于空闲状态(停止但不释放),某些平台可能会停止从麦克风传输音频数据,从而有效地使语音通话上行静音。为了避免这种情况,供应商可能刚刚决定语音通话期间的录音实际上不会发送到任何输入设备,而只是用零填充
免责声明:我没有使用过Nexus S,因此我不知道该特定设备的原因。这是正常的。你不能录音,因为电话占用了麦克风的独家控制权。你能说出几个可以录音的应用程序吗?只需在google play上搜索“录音通话”关键字。有一些应用程序具有4星评级和数千次下载,这意味着至少这部分是可能的。谢谢,帮助我理解了为什么会发生这种情况。