任务是录制电话。
除了以下代码之外的其他所有内容都正常工作:来电事件,去电事件,拒绝来电等等,所以我的问题出在音频录制过程中。
代码:
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(AudioSource.VOICE_CALL);
boolean AAC_SUPPORTED = Build.VERSION.SDK_INT >= 10;
if (AAC_SUPPORTED) {
mediaRecorder.setAudioSamplingRate(44100);
mediaRecorder.setAudioEncodingBitRate(96000);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
} else {
mediaRecorder.setAudioSamplingRate(8000);
mediaRecorder.setAudioEncodingBitRate(12200);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
}
这是一个奇怪的莫名其妙的部分:
人A呼叫人B.亲自电话记录的.mp4文件是完美的。两侧音频清晰响亮。但是然后人员B呼叫人A.我们仍然在A人的电话上。同样的录音代码正在运行,但这次其他人的声音没有被录制或录制的质量非常差。
所以拨打电话是完美的,但是在来电中,无论是否执行相同的代码,其他人的语音都不会录音。
两款手机的操作系统版本均为4.4.4
我为setAudioSource();
测试了所有参数有没有:
mediaRecorder.setAudioSamplingRate(44100);
mediaRecorder.setAudioEncodingBitRate(96000);
我从使用此intent-filter声明的Receiver中运行代码:
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
<action android:name="android.intent.action.ACTION_ANSWER"/>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
有没有人知道问题所在?
我用另一个Call Recorder应用程序测试了这个场景,一切都很好。所以它不是特定于设备的。必须有一些我做错的事。