2011-02-01 86 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。对不起,如果这不起作用,只是一个快速的想法。