我正在研究使用麦克风输入传输语音的新项目。音频由 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/