要实现在安卓设备上清晰录制传入电话的声音,可以使用以下方法:
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setSpeakerphoneOn(true);
MediaRecorder mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile(outputFilePath);
mediaRecorder.prepare();
mediaRecorder.start();
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
// 电话挂断,停止录制
stopRecording();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
// 电话接通,开始录制
startRecording();
break;
default:
break;
}
}
};
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
private void startRecording() {
// 创建并启动MediaRecorder
// ...
}
private void stopRecording() {
// 停止并释放MediaRecorder
// ...
}
请注意,由于安全和隐私原因,Android操作系统限制了对电话通话的录音功能。上述方法可能无法在所有设备上正常工作。