Включенная служба AccessibilityService вызывает молчание микрофона Android 10 - PullRequest
3 голосов
/ 08 мая 2020

Я погружаюсь в новый проект, в котором для передачи голоса используется микрофонный вход. Аудио записывается с помощью Service, захват может быть запущен из пользовательского интерфейса (например, Activity), но также и со стороны сервера (какой-то вид подслушивания) или посредством трансляции из другого приложения. Функция хорошо работает во всех версиях Android.

Теперь у меня есть задача обрабатывать некоторые ключи (KeyEvent), даже когда приложение находится в фоновом режиме, но вышеупомянутая служба переднего плана работает. Итак, я сделал AccessibilityService с переопределением onKeyEvent(KeyEvent event), проверка внутри - это запущенная служба и обработка правильных ключей при необходимости. Эта функция также отлично работает.

НО я только что заметил странное поведение на Android 10 - тишина от mi c, когда AccessibilityService включен ... Когда я выключаю его mi c начинает работать. На Android 9 и ниже аудиозахват работает всегда независимо от состояния включения / выключения.

Я нашел руководство в документах с некоторой информацией об изменении поведения обработки аудиовхода и диспетчеризации это, но я не вижу раздела, связанного с моей ситуацией. Функция захвата звука и служба доступности принадлежат одному приложению, и эта служба нужна только для работы с ключами. Возникает вопрос, почему мой сервис ломает mi c на 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="" />

1 Ответ

0 голосов
/ 22 августа 2020

замените AudioSource.MI C на AudioSource.VOICE_COMMUNICATION

...