TextToSpeech音频路由到手机扬声器而不是蓝牙耳机

时间:2017-10-03 08:57:58

标签: android text-to-speech android-bluetooth android-audiomanager audio-route

我有一个使用android.speech.tts.TextToSpeech.speak()来读取消息的应用。

这些消息只能读取到连接的蓝牙耳机。所以在我调用speak方法之前,我检查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);

此行为按预期工作了大约一年,但最近它仅以三星设备失败,因为它将音频路由到手机的扬声器并且消息被读出响。

我设法通过以下方式解决了路由问题:

1。AudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);

2。mAudioManager.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN);

3。mAudioManager.startBluetoothSco();

4.播放简短的音频文件

如果我执行这4个步骤,音频路由将被修复并路由到蓝牙耳机。

问题:

为什么三星设备会将音频路由到手机扬声器而不是蓝牙设备?

检查音频是否会被路由到耳机而不是AudioManager.isBluetoothA2dpOn();的任何可靠方法?

0 个答案:

没有答案