android - 使用 MediaRecorder 在 android 中录制语音通话

标签 android mediarecorder telephonymanager

我在录制通话时遇到问题 我已经创建了一个服务并调用了一个 BroadcastReceiver 来获取通话状态。在 TelephonyManager.EXTRA_STATE_OFFHOOK 中,当收到调用时。我正在使用以下代码来记录通话

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);                               recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setOutputFile(audiofile.getAbsolutePath());
try {
     recorder.prepare();
     recorder.start();
} 
catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) { 
e.printStackTrace();
} catch (Exception ex)
{
ex.printStackTrace();
}

这段代码工作正常并创建了音频文件,但是当我收听音频文件时,我只能听到我传出的声音,不会记录来电者的声音。

当我使用

recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);

代替

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

在上面的代码中,它在 recoder.start() 上抛出 recoder fails 的异常;

那么,我该如何录制语音通话呢?

最佳答案

一年前我也有过同样的疑惑AudioSource.VOICE_CALL not working in android 4.0 but working in android 2.3

recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); 在有限的设备上工作,它只会在不支持语音通话的设备上给出异常,所以捕获异常并重新从麦克风开始录音,这将使您在不受支持的设备上更安全。

关于android - 使用 MediaRecorder 在 android 中录制语音通话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24139332/

相关文章:

android - 如何使用phonegap知道Android中创建的目录在哪里?

android - 将音频文件流式传输到 soundpool load() Android

Android应用程序错误 "Unfortunately App has Stopped"

mediarecorder - 使用 MediaRecorder 录制流中可用的多音轨

android - MediaRecorder 在启动时崩溃

Android TelephonyManager getCellllLocation,是否已弃用?

android - 如何跟踪 Android 中的消息?

android - 如何在 nativescript/angular android 中导入/导出 sqlite 数据库?

Android AudioRecord 和 MediaRecorder

android - 如何在语音通话期间发送预先录制的 (wav) 文件?