Я делаю приложение для разговора с вызывающим абонентом, которое произносит имя вызывающего абонента с использованием TTS. Я хочу приостановить мелодию звонка, пока TTS говорит, а затем возобновить мелодию звонка. Из того, что я исследовал, мы можем использовать AudioFocus
(надеюсь на это). В любом случае я использую следующий код
Обновить
Я использую этот код сейчас.
public void speak(final String talk) throws InterruptedException {
final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int musicVolume= audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, musicVolume, 0);
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
int result = tts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
// TODO Auto-generated method stub
}
@Override
public void onError(String utteranceId) {
// TODO Auto-generated method stub
}
@Override
public void onDone(String utteranceId) {
// TODO Auto-generated method stub
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
System.out.println("done");
}
});
HashMap<String, String> params = new HashMap<String, String>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"stringId");
tts.speak(talk, TextToSpeech.QUEUE_FLUSH, params);
System.out.println("speaking after tts is over" + talk+" "+result);
}
Хотя Ringtone
остановлен и tts
воспроизводится, но после воспроизведения tts
Ringtone
не возобновляется. Что я должен делать?