8

我正在开发一个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

4 回答 4

4

用作AudioSource VOICE_COMMUNICATION,因为它是针对语音通信(如 VoIP)调整的麦克风音频源,如 Android 开发者网站上所述。

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

试一试:
1:通话时调高音量。
2. 不要使用耳机,因为在某些情况下麦克风不会录制音频[没试过这个]。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);

于 2017-11-28T11:46:00.083 回答
3

好吧,问题是您只使用该代码记录麦克风输入,这显然只是传出的声音。要同时录制传入的声音,您还必须录制系统声音。

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

最后,您还必须将两个音轨合并到一个文件中,才能将整个通话合二为一。

于 2017-11-22T13:30:17.983 回答
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);
于 2017-12-08T10:11:35.700 回答
2
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

尝试使用这个

于 2017-11-22T13:08:39.053 回答