AccessibilityService 打开导致 Android 10 上的麦克风静音

AccessibilityService turned on causes silence from microphone on Android 10

我正在研究使用麦克风输入传输语音的新项目。音频由 Service 录制,捕获可能从 UI(例如 Activity)开始,但也可以从服务器端(某种窃听)或从另一个应用程序广播开始。功能适用于 Android.

的所有版本

现在我有任务来处理一些键 (KeyEvent),即使应用程序在后台,但上面提到的前台服务是 运行。所以我用覆盖 onKeyEvent(KeyEvent event) 制作了 AccessibilityService,检查内部是服务 运行 并在需要时处理正确的密钥。此功能也可以正常工作。

但是我刚刚注意到 Android 10 上的奇怪行为 - 当 AccessibilityService 打开时麦克风静音...当我关闭它时麦克风开始工作。在 Android 9 及以下,无论 on/off 状态如何,音频捕获始终有效。

我发现 guide in docs 有一些关于处理音频输入和调度它的行为发生变化的信息,但我没有看到任何与我的情况相关的部分。音频捕获功能和辅助功能服务属于一个应用程序,并且仅在按键处理时才需要此服务。所以问题是为什么我的服务会在 Android 10 上损坏麦克风,我该如何防止这种情况?

作为奖励 - XML 配置

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes=""
    android:accessibilityFeedbackType="feedbackSpoken|feedbackHaptic"
    android:accessibilityFlags="flagRequestFilterKeyEvents"
    android:canRequestFilterKeyEvents="true"
    android:canRetrieveWindowContent="false"
    android:description="@string/accessibility_permission_desc"
    android:notificationTimeout="25"
    android:packageNames="my.package.name"
    android:settingsActivity="" />

将AudioSource.MIC更改为AudioSource.VOICE_COMMUNICATION

在对不同设备进行一些测试后(由@Bernardo Ruz 评论指出)结果表明,所描述的问题(可能)仅发生在 Google 具有 Android 10 的像素上。看起来像一些错误系统级。

今天 Google 发布了 Android 11,所有 Pixel 都在获取更新。我已经检查了 Pixel 3 和相同的应用程序,没有重新安装或任何更新,它开始工作了,看起来它已经被修复了

编辑:由于我们的市场非常分散,有可能一些制造商首先 release/commit 出货 Android 10(例如,向客户承诺)并且只是忘记了型号,再也没有出货补丁(例如安全)。每台设备都必须停在某些 Android OS 版本上,看起来有些设备将永远存在问题(只要 10 台将出现在市场上)