Аудио TextToSpeech направляется на динамик телефона вместо Bluetooth-гарнитуры
У меня есть приложение, которое использует android.speech.tts.TextToSpeech.speak()
считывать сообщения.
Сообщения должны считываться только с подключенной Bluetooth-гарнитуры. Поэтому, прежде чем я вызову метод говори AudioManager.isBluetoothA2dpOn();
Говорят о реализации метода:
ttsOptions.putInt(TextToSpeech.Engine.KEY_PARAM_STREAM, AudioManager.STREAM_VOICE_CALL);
ttsOptions.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME, 1.0f);//MAX
tts.speak(text, TextToSpeech.QUEUE_ADD, ttsOptions, utteranceID);
Такое поведение работало, как и ожидалось, около года, но в последнее время на устройствах Samsung происходит сбой только таким образом, что он направляет звук на динамик телефона, и сообщение зачитывается вслух.
Мне удалось исправить проблему маршрутизации с помощью взлома:
1. AudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
2. mAudioManager.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN);
3. mAudioManager.startBluetoothSco();
4. Воспроизвести краткий аудиофайл
Если я сделаю эти 4 шага, аудио-маршрутизация будет зафиксирована и направлена на Bluetooth-гарнитуру.
Вопросы:
Почему устройства Samsung направляют звук на динамик телефона вместо устройства Bluetooth?
Любой надежный способ проверить, будет ли аудио направляться на гарнитуру вместо AudioManager.isBluetoothA2dpOn();
?