android - AccessibilityService 开启会导致 Android 10 上的麦克风静音

标签 android accessibilityservice android-audiorecord accessibility

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

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

但我刚刚注意到 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="" />

最佳答案

将 AudioSource.MIC 更改为 AudioSource.VOICE_COMMUNICATION

关于android - AccessibilityService 开启会导致 Android 10 上的麦克风静音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61673599/

相关文章:

Android ListView 分隔符奇怪的问题

android - 如何以编程方式从辅助服务中添加和删除布局?

从 Java 端调用的 Android native 方法

java - OpenCv 人脸追踪 Android 应用程序

java - 使用 JUNIT 测试运行 AsyncHttpClient

android - 计算任意大小的 3D 体积的推荐方法

android - Android Pie 中的 AccessibilityService 是否发生了变化?

android - 如何从辅助功能服务隐藏和显示 Android 软键盘

java - Android 5.0 无法录制 96000Hz 音频?

android - 如何使用 MediaCodec 对视频和音频进行编码