我正在开发一个用于录制通话的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移动设备时我只能听到外出的声音,但听不到来电声音。
任何人都可以帮我解决这个问题吗?
答案 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);