【问题标题】:Call recorder not working in android 10 (Q)通话记录器在 android 10 (Q) 中不起作用
【发布时间】:2019-10-04 04:59:59
【问题描述】:

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

有没有办法在 Android 10 中记录通话?

下面的代码似乎不再工作了。

    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 中的一个错误,并且一些补丁可以修复它。

【问题讨论】:

标签: android call android-10.0 recorder


【解决方案1】:

可以使用Accessibility Service

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

这里有详细信息link

【讨论】:

  • 插上耳机,看看对方有没有录音
  • @ZAB,什​​么是误导?有一种方法可以记录通话,而 Cube 通话记录器正在这样做,这就是我的意思。如果完全禁用,立方体呼叫记录器如何记录它?
  • 你没有录音。您正在使用麦克风录制背景。通话录音功能已从 Android 中删除。请停止为这个应用做广告,还有很多其他应用也在做同样的事情。
  • 我在 Android 10 上同时使用 Cube 和 Pixel,它只是保存录音而没有任何声音。
  • 我已经成功部署了一个无障碍服务 + MediaRecorder + 无障碍覆盖。 MediaRecorder 的音频源必须配置为 VoiceRecognition。透明/非交互式覆盖用作优先级代理,正如 Android Reference 所说“如果服务的 UI 位于顶部,则服务和应用程序都会接收音频输入。这种行为提供了控制语音呼叫或使用语音捕获视频等功能命令。”。实际上它在没有覆盖的情况下也可以工作,我终于能够捕获传出的 WhatsApp 语音消息。
【解决方案2】:

根据 Google 的新许可 policy,没有其他第三方应用(系统应用除外)可以记录来自 Android 9 Pie 的通话。

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

【讨论】:

  • 我有 Pixel 和 Android 9,通话录音在这方面工作得很好。
  • 该链接来自 Google Play 开发者政策,而不是来自 android。它提到的限制是针对上传到 Google Play 商店的应用程序。
  • 见这里here
  • 所以它没有完全被阻止。 Cube 通话记录器已经在 android 10 中清晰地记录了双方的声音。将尽快找出并更新答案。
【解决方案3】:

我正在使用具有 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());

希望它有效:)

【讨论】:

  • 你的“服务 mService = null;”是什么?是通话录音服务吗?我在这个链接上有一个通话录音的例子:github.com/tntkhang/call-recording-master你能看一下吗,它在 10 以下的 android 上工作,但在 android 10 上它变得沉默了。
  • 您使用的是哪种设备?
  • 你可以试试没有这行recorder.setAudioSamplingRate(44100); recorder.setAudioEncodingBitRate(96000);
  • @prototype86 你找到解决问题的方法了吗?我也面临同样的错误
  • 您的回答不清楚,请清楚如何将Accessibility class附加到Recording service。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 2020-10-05
相关资源
最近更新 更多