通话记录器在 android 10 (Q) 中不工作

Call recorder not working in android 10 (Q)

通话记录器在 Android 10(Pixel 3A)的持续时间内记录空白。在 Android 8 和 Android 9 之前,它对所有手机都工作正常,大多数手机只录制一侧的声音(但它在像素 3A 中工作正常)

在Android10有没有什么方法可以录音?

下面的代码似乎不再有效。

    int audioSource = MediaRecorder.AudioSource.VOICE_CALL;
    mediaRecorder.setAudioSource(audioSource);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    mediaRecorder.setAudioEncodingBitRate(32);
    mediaRecorder.setAudioSamplingRate(44100);
    mediaRecorder.setOutputFile(MediaUri);
    mediaRecorder.prepare();
    mediaRecorder.start();

如果使用 SDK 28 或以下版本,通话录音会全程进行,但没有任何声音。如果使用 SDK 29,通话录音一开始会失败,提示检查来自回调的可用音频。

我希望它是 Google Android 10 中的一个错误,一些补丁会修复它。

根据 Google 的新权限 policy 没有其他第三方应用程序(系统应用程序除外)可以记录来自 Android 9 Pie 的呼叫。

此更改一般不会影响以前的录音或通话录音。

可以使用 Accessibility Service

Remote call recorder 和 BoldBeast 都可以在 Android 10 (Pixel 3A) 中完美地录制双方的声音,而无需 root 或成为系统应用程序。他们都使用无障碍服务。

这里有详细信息link

我正在使用版本为 android 10 的 Realme2pro 设备,它对我有用 Accessibility 试试这个代码

要实现辅助功能,请执行此操作 link

public class Accessibility extends AccessibilityService {

Service mService = null;

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
    Log.d("MyAccessibilityService", "Shrinidhi: onAccessibilityEvent");
}

@Override
public void onInterrupt() {

}


@Override
protected void onServiceConnected() {
    Log.d("MyAccessibilityService", "Shrinidhi: onServiceConnected");
}

@Override
public void onCreate() {
    this.mService = this;
    Log.d("MyAccessibilityService", "Shrinidhi: onCreate");
 }
}

并将 AudioSource 添加到 recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION);

 recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile(file.getAbsolutePath());

希望它有用:)