在Android 4.0中,AudioSource.VOICE_CALL无法工作,但在Android 2.3中可以。

11
VOICE_CALL, VOICE_DOWNLINK ,VOICE_UPLINK  

该应用在安卓4.0上不起作用,但在安卓2.3(实际设备)上可以运行。我上传了一个虚拟项目以记录所有传出的电话,这样您就可以亲自查看。

http://www.mediafire.com/?img6dg5y9ri5c7rrtcajwc5ycgpo2nf

您只需在TService.java中第118行更改audioSource = MediaRecorder.AudioSource.MIC;audioSource = MediaRecorder.AudioSource.VOICE_CALL;

如果遇到任何错误,请告诉我。欢迎提出任何与此相关的建议。


3
该Mediafire文件已不再可用。 - Tom
Mediafire 文件无效或已删除。 - Ajay Pandya
4个回答

16

经过大量的搜索,我发现一些制造商关闭了此类功能的访问,因为在某些国家不允许录音通话。如果有人发现这样的问题,并以其他方式找到解决方案,请在此发布,这可能对许多人有帮助,因为很多人都面临同样的问题。


2
兄弟,我已经找了一个月的解决方案了,所以我在 Stack 上发布了这个问题,但没有人回答。 - Auto-Droid ツ
4
请记住,它只会在不支持语音呼叫的设备上产生异常,因此捕获异常并从麦克风重新开始录制,这将使您在不支持语音呼叫的设备上更加安全。 - Auto-Droid ツ
当我使用 MediaRecorder.AudioSource.VOICE_CALL 时,它会给我一个空指针异常,并且在录制后上行和下行的声音都听不到,但是对于麦克风的情况像你说的一样工作正常。那么,有没有解决这个上行和下行的问题的方法? - Akarsh M
除非您对手机进行ROOT,否则在某些设备上将无法使用语音呼叫、上行和下行链路,根据我之前的回答,制造商已关闭了对此类功能的访问,麦克风是唯一可用于录音的来源。 - Auto-Droid ツ
在Play商店中有很多允许录音通话的应用程序。这些应用程序是如何运作良好的? - Aditya Vyas-Lakhan
显示剩余11条评论

1

好的,在我的情况下,this code(感谢eyal!)适用于三星Galaxy Note 6:

String manufacturer = Build.MANUFACTURER;
if (manufacturer.toLowerCase().contains("samsung")) {
    recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
} else {
    recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
}

之前我的应用程序总是崩溃,但使用这段代码后,它可以正常工作了,但无法记录第二端的声音。 - CopsOnRoad

1

尝试使用MediaRecorder.AudioSource.VOICE_RECOGNITION。我遇到了同样的问题 - ASUS Transformer默认使用靠近后置摄像头的麦克风,在这种情况下,音频非常微弱。在这款平板电脑上,VOICE_CALL无法正常工作,我已经尝试过VOICE_RECOGNITION - 在这种情况下,它使用前置麦克风,音频音量是可以接受的。


-2

你尝试添加这个,可能会有所帮助。

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        // TODO Auto-generated method stub
        mMediaRecorder.start();
    }
}, 1000);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接