中断MediaPlayer

时间:2011-06-17 09:31:34

标签: android media-player

我的应用程序会偶尔通过TextToSpeech或使用MediaPlayer发布简短的通知。如果某些应用程序使用MediaPlayer可能会在后台运行其他音乐,我想暂停这段音乐片刻,然后在我宣布恢复播放“背景音乐”之后。

有办法吗?

2 个答案:

答案 0 :(得分:5)

如果您可以定位API级别8及以上(Android 2.2),请查看AudioManager,特别是requestAudioFocus() AUDIOFOCUS_GAIN_TRANSIENTAUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK,以及{ {3}}

这些提示了当前播放的音乐流,您的应用程序希望播放简短的声音。如果您将AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCKrequestAudioFocus()一起使用,您可以获得一个很好的效果,即已播放的音乐暂停,您的声音播放,然后当您拨打abandonAudioFocus()时,播放音乐会再次淡入。

这与我尝试使用的2.2设备上的内置媒体播放器(三星Galaxy S Wi-Fi和HTC Wildfire)很好地配合使用。我没有尝试过与其他音乐播放应用程序一起广泛使用,但是它至少可以与Spotify一起使用,并且是完全按照你想要做的正式方式。

请注意,由于大多数声音都是异步播放,因此您需要自己决定何时拨打abandonAudioFocus()。幸运的是,MediaPlayerTextToSpeech都提供了回调机制,因此当他们播放完你的声音时,它们会给你一个刺激(这个不是为{{1}因此,使用音频焦点会更烦人。)

答案 1 :(得分:0)

我认为没有一种标准的方法可以为每个音乐播放器做到这一点。至少对于你可以做的Android音乐播放器:

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

另一种方法是将“music”类型的流量设置为0,然后在另一种流类型上播放您的通知。