Android Bluetooth SCO с автомагнитолой Nissan

Прежде чем мы перейдем к деталям, немного контекста:

  • Автомобиль: Nissan Note (модель 2011 года в Великобритании)
  • Устройство: Nexus 4
  • ОС: Android 4.3 Stock

Я пытаюсь создать приложение для распознавания и синтеза речи в моей машине, когда телефон подключен через Bluetooth. Автомобильная аудиосистема не обеспечивает своего собственного распознавания голоса, но вместо этого делегирует это на телефон, вызывая намерение android.intent.action.VOICE_COMMAND

Приложение по умолчанию для обработки этого устройства - это приложение Google Search, которое выполняет определенные функции для набора без участия рук. Это приложение имеет ужасное распознавание речи, но оно демонстрирует, как должна работать система - при активации автомобиль отображает "Активация распознавания голоса" на экране телефона во время работы приложения, а затем скрывает его при выходе из приложения.

Проблема у меня заключается в том, что хотя я могу заставить эту метку появляться, вызывая AudioManager.startBluetoothSco() и, таким образом, воспроизводить аудио через автомобильные динамики и записывать его через автомобильный микрофон, но AudioManager.stopBluetoothSco() не отключает этот режим в автомобиле., и он продолжает отображать "Распознавание голоса активно". Это проблема, поскольку автомобиль не будет запускать приложение, пока соединение Bluetooth не будет закрыто и повторно открыто.

Мои эксперименты подтвердили, что это AudioManager.startBluetoothSco(), который включает режим в автомобиле, и что AudioManager.stopBluetoothSco(), по-видимому, имеет эффект изменения окружающего звука, производимого автомобилем (очень слабое шипение обычно слышно, когда Аудиосистема активна остановится, когда эта команда будет выполнена), но никакого другого эффекта не видно.

Я не уверен, что что-то еще неявно активируется при вызове AudioManager.startBluetoothSco(), который затем должен быть неявно остановлен, но в настоящее время у меня нет идей, что именно попробовать.

1 ответ

Решение

После долгих исследований я наткнулся на это: http://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html, которое может быть связано с этой проблемой. После соответствующего вызова startVoiceRecognition и stopVoiceRecognition все вещи вернулись в свое нормальное состояние.

Другие вопросы по тегам