android – 中断MediaPlayer

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

有办法吗?

解决方法:

如果您可以定位API级别8及以上(Android 2.2),那么请查看AudioManager,特别是requestAudioFocus(),其中包含AUdioFOCUS_GAIN_TRANSIENT和AUdioFOCUS_GAIN_TRANSIENT_MAY_DUCK以及abandonAudioFocus().

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

这与我试过的2.2设备上的内置媒体播放器很好地配合(三星galaxy S Wi-Fi和HTC Wildfire.)我没有广泛尝试过与其他音乐播放应用程序,但它绝对有效至少和Spotify一样,是正确做你想做的事情的官方方式.

请注意,当您调用abandonAudioFocus()时,您需要自己解决,因为大多数声音是异步播放的.幸运的是,MediaPlayer和TextToSpeech都提供了回调机制,因此当他们完成播放声音时,它们可以为您提供刺激(SoundPool不是这样,因此使用音频焦点会更烦人.)

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...