我有一个使用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();
的任何可靠方法?