大多数设备上我都有这样的工作。 下面是在语音呼叫流中使用蓝牙SCO代替A2DP启动TTS的部分。if (mTtsReady) {
myHash = new HashMap();
myHash.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"A2DP_Vol");
OLD_AUDIO_MODE = am2.getMode();
if(SMSstream == 1){
if (am2.isBluetoothScoAvailableOffCall()) {
am2.startBluetoothSco();
}
if(!am2.isSpeakerphoneOn()){
speakerPhoneWasOn = false;
am2.setSpeakerphoneOn(true);
}
myHash.put(TextToSpeech.Engine.KEY_PARAM_STREAM,
String.valueOf(AudioManager.STREAM_VOICE_CALL));
am2.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
}
else{
am2.requestAudioFocus(null, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
myHash.put(TextToSpeech.Engine.KEY_PARAM_STREAM,
String.valueOf(AudioManager.STREAM_MUSIC));
}
new CountDownTimer(SMS_DELAY, SMS_DELAY/2) {
@Override
public void onFinish() {
try {
mTts.speak(str, TextToSpeech.QUEUE_ADD,
myHash);
} catch (Exception e) {
Toast.makeText(application,
R.string.TTSNotReady,
Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
@Override
public void onTick(long arg0) {
}
}.start();
}
现在我只是有一个问题,让流在完成后恢复。 读TTS都很正常。 它会暂停任何音乐播放TTS然后恢复音乐。 但是,当我退出应用以后,媒体流现在通过电话听筒播放,直到我重启。 我在这里发布了这个问题: 音频流在使用 AudioManager 后留在耳机上