9

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();

4

0 回答 0