Аудио 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();?

0 ответов

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