在Android 7中录制的通话中听不到传入的声音?

时间:2017-11-22 13:07:28

标签: android android-7.0-nougat

我正在开发一个用于录制通话的Android应用。 这是我的代码段。

    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    recorder.setOutputFile(file_path);

这适用于设备 android 7,但是当我使用Android 7移动设备时我只能听到外出的声音,但听不到来电声音

任何人都可以帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:4)

原样使用VOICE_COMMUNICATION作为AudioSource 麦克风音频源,用于语音通信,如VoIP,as described on Android Developers site.

我尝试使用VOICE_CALL(使用音频上行链路和下行链路录制),但它只能由系统组件使用,因此麦克风只是录制音频的选项。

TRY:
1:在通话过程中向上滑动音量 2.请勿使用耳机,因为某些情况下麦克风不会录制音频[Haven未尝试过]。 3.适用于Moto G4 Play,Android版本7.1.1(大部分摩托罗拉手机都有两个麦克风):

recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION); recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

答案 1 :(得分:3)

嗯,问题是你只用那段代码记录麦克风输入,这显然只是传出的声音。要录制传入的语音,您还必须录制系统声音。

要录制系统声音,您必须稍微google一下。以下是一些可以帮助您入门的stackoverflow链接:

最后,您还必须将两个音轨合并为一个文件,以便将整个调用合为一个。

答案 2 :(得分:2)

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

尝试使用此

答案 3 :(得分:2)

此代码的工作方式类似于使用API​​ 25构建的Android 7的魅力

recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setAudioSamplingRate(8000);
recorder.setAudioEncodingBitRate(12200);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);