2011-02-01 83 views
0

我使用MediaPlayer播放音頻文件,並使用TTS引擎輸出文本。不,我想將兩種類型的音量設置爲相同的音量。 我試圖設置MediaPlayers setVolume-Method和更一般的setVolumeControlStream,但不費力氣。有沒有人有這個問題的想法或示例代碼?Android MediaPlayer TTS問題

Fesp

回答

0

我不知道這會工作,但你嘗試過使用AudioManager類來檢索當前的音量,然後該捲進入到TTS API。這是我接觸類似場景的方式。

我使用單例模式創建了自己的自定義Volume Manager(負責MediaPlayer/TTS/etc之間的卷管理)。我使用以下方法檢索MediaPlayer卷。

AudioManager audioManager = (AudioManager) Context.getSystemService(Context.AUDIO_SERVICE); 
int volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 

此外,你可能會得到AudioManager的新實例時,TTS是開放的,因爲你將不得不確保音頻具有TTS的保持,而不是MediaPlayer的。對不起,如果這不起作用,只是一個快速的想法。

然後,當您打開TTS時,可以通過使用AudioManager API再次手動更改音量。

audioManager.setStreamVolume(streamType, index, flags); 

當用戶更改TTS上的卷時,卷管理器會攔截它並執行其自己的過程。我知道這不是一個理想的解決方案,但我用它作爲快速解決方法。設置音量時,我必須得到一個AudioManager的新實例,以確保我擁有TTS而不是MediaPlayer。對不起,如果這不起作用,只是一個快速的想法。