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