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 все вещи вернулись в свое нормальное состояние.