2011-06-17 26 views
3

我的申請通過TextToSpeech或使用MediaPlayer偶爾發佈一條短消息。如果在某些應用程序中使用MediaPlayer可能會在背景中運行某些其他音樂,我想暫時中斷此音樂並在播放「背景音樂」後播放。中斷MediaPlayer

有沒有辦法做到這一點?

回答

5

如果可以定位API級8和上述(的Android 2.2),然後看看進AudioManager,具體requestAudioFocus()AUDIOFOCUS_GAIN_TRANSIENTAUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK,和abandonAudioFocus()

這些提示提示您正在播放的音樂流,您的應用程序想要播放簡短的聲音。如果您使用AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK和​​,您可以在已播放的音樂暫停,播放聲音的情況下獲得很好的效果,然後當您致電abandonAudioFocus()時播放的音樂會再次消失。

這很適合我在2.2設備上使用的內置媒體播放器(三星Galaxy S Wi-Fi和HTC Wildfire)。我沒有試用過其他音樂播放應用程序,但它至少可以與Spotify一起使用,並且是正確執行你想要做的事情的官方方式。

請注意,由於大多數聲音是異步播放的,因此您需要自行調用abandonAudioFocus()。幸運的是,MediaPlayerTextToSpeech都提供了回撥機制,因此當它們播放完聲音時它們可以爲您提供產品(不是的真實值,因此使用音頻聚焦更加令人討厭。)

0

我不認爲有一個標準的方式來爲每個音樂播放器做到這一點。至少在Android的音樂播放器,你可以這樣做:

Intent i; 
i = new Intent("com.android.music.musicservicecommand"); 
i.putExtra("command", "pause"); 
context.sendBroadcast(i); 

另一種方式來做到這一點。將設置類型「音樂」爲0流量,並播放語音通知上的另一流類型。