【问题标题】:AccessibilityService turned on causes silence from microphone on Android 10AccessibilityService 开启会导致 Android 10 上的麦克风静音
【发布时间】:2020-08-23 16:22:43
【问题描述】:

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

现在我有任务来处理一些键 (KeyEvent),即使应用程序在后台,但上面提到的前台服务正在运行。所以我创建了AccessibilityService 并覆盖了onKeyEvent(KeyEvent event),检查内部是否正在运行服务并在需要时处理正确的键。这个功能也很好用。

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

我发现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="" />

【问题讨论】:

  • 你解决了吗?对我来说,它只发生在搭载 Android 10 的 Pixel 设备上。我已经在搭载 Android 10(启用了辅助功能)的三星和华为设备上进行了测试,并且可以正常工作。我的结论:Pixel的错误?
  • 是的,我正在 Pixel 上进行测试,下周将在 S10e 上尝试,现在假设这会起作用...尚未找到解决方案,如果我确认其他型号的错误,将考虑赏金/Android 框架

标签: android accessibilityservice android-audiorecord android-accessibility


【解决方案1】:

将 AudioSource.MIC 更改为 AudioSource.VOICE_COMMUNICATION

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多