Предотвращение сноса bluetooth в android после завершения вызова VOIP - PullRequest
1 голос
/ 06 марта 2020

Я пытаюсь сохранить соединение Bluetooth Sco для устройства, работающего android с момента подключения гарнитуры Bluetooth, когда гарнитура отключена, или, более конкретно, я бы хотел, чтобы ссылка sco не разрывалась приложением, пока блютуз гарнитура подключена. Пользователь может, находясь в меню вызова VOIP, выбрать кнопку с иконкой BT / динамика, разорвать и вернуть ссылку sco (как она инициирована пользователем).

Когда вызов VOIP заканчивается ( Например, WhatsApp, Google Hangouts, Skype, Viber и т. д. c). При использовании Bluetooth-гарнитуры ссылка sco прерывается. Я хотел бы, чтобы ссылка sco была либо не разорвана, когда вызов VOIP заканчивается (предпочтительная операция), либо была восстановлена ​​с помощью «некоторого» механизма.

Вещи, которые я пытался (но безуспешно):

1) Попытка обнаружить начало / конец вызова VOIP, но чтение других сообщений SO, похоже, это невозможно. Существует множество ловушек для обнаружения вызовов на основе sim и завершения, но не для вызовов на основе VOIP.

2) Запустите sco с помощью startVoiceRecognition (), как показано ниже. Казалось, это работает ... почти ...

audioManager.setMode(MODE_IN_COMMUNICATION)
audioManager.startVoiceRecognition()

При таком подходе было две проблемы.

  • Входящий вызов whatsApp разрушает sco, установленный с помощью startVoiceRecognition () api
  • Во время вызова по VOIP (видеовстречи, whatsApp et c) параметры аудио маршрута во время вызова не работают

Я просмотрел несколько сообщений SO на этом, но безуспешно.

3) Я заметил, что Audiomanager.setMode устанавливается в MODE_NORMAL (0), когда заканчивается вызов VOIP, и я могу startBlueToothSco() там, но нет прослушивателя для режима AudioManager изменения и я не хочу опрашивать его. Я также заметил, что это зависит от попытки приложения VOIP остановить sco на конце вызова, проверка режима может не работать, так как приложение может вызвать stopBluetoothSco после изменения режима.

4) Выполните фиктивный вызов с помощью API-интерфейса ConnectionService. это заставляет android думать, что он находится в вызове, но препятствует установлению вызовов VOIP, и, следовательно, канал sco не будет отключен. (не желательно, так как мне нужны VOIP-звонки)

Любые идеи / предложения будут оценены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...