Блокировка Google Assistant во время сеанса распознавания голоса, инициированного Bluetooth-гарнитурой?

Я работаю над приложением для распознавания голоса, которое подключается к специальному оборудованию с использованием профиля громкой связи Bluetooth (HFP, также известного как профиль гарнитуры). Приложение используется для передачи аудиоданных PCM на облачный сервер распознавания голоса с использованием класса Android AudioRecord. Эта функция работает нормально, если приложение инициирует соединение SCO, но если аппаратное обеспечение гарнитуры инициирует соединение SCO, отправив на телефон команду AT+BVRA HFP, Google Assistant всегда захватывает телефон. Таким образом, мой вопрос, как я могу остановить это? Есть ли способ программно заставить Google Assistant расслабиться? Я пробовал много разных вещей (управление sco AudioManager, предпочтительное соединение AudioRouting, класс профиля BluetoothHeadset, Java Reflection & View.setAssitBlocked(true) и т. д.), но ни один из них не может ни заблокировать Google Assistant, ни восстановить связь ШОС. (Также кажется, что телефон открывает A2DP для аудиопотока помощника Google). Я надеюсь, что это возможно с помощью решения на основе Java...?


person user608578    schedule 18.05.2018    source источник


Ответы (1)


Как отмечено в другом ответе, скорее всего, Android передает намерение ACTION_VOICE_COMMAND, и, поскольку Google Assistant настроен на его получение, он получает приоритет при подключении. Ваше приложение может зарегистрироваться для получения намерения и посмотреть, получит ли оно приоритет при его получении.

person andrewia    schedule 22.08.2018