
声音
|
145
MPMediaPickerController
的取消按钮之后,委托对象的
mediaPickerDidCancel
方法会被触发,我们同样需要在这个方法中调用同样的方法关闭
MPMediaPickerController
。
4.10
当其他
App
正在播放音乐时的操作
问题
有时候,我们想让游戏的背景音乐只在用户没有播放其他声音时播放。
解决方案
我们可以用
AVAudioSession
类来检查当前是否有其他应用程序在播放音乐:
let session = AVAudioSession.sharedInstance()
if (session.isOtherAudioPlaying) {
//
当前有其他应用程序在播放声音。这种情况下,就不能再播放任何
//
声音了(比如你的背景音乐),以免声音混杂在一起
} else {
//
当前没有其他应用程序在播放,开始播放!
}
讨论
AVAudioSession
类允许我们对设备中的声音该如何播放进行一些控制,以及设备
如何处理某些事情,例如,振铃开关(这个开关位于设备的侧边)以及用户锁屏时
进行一些非常灵活地控制。
正常情况下,当我们开始用
AVAudioPlayer
回放音乐时,如果当前有其他
App
(如
系统内置的音乐
App
)正在播放,则其他
App
应当停止播放,而只有我们游戏中
的播放器可以发声。
当然,我们也可以让用户在玩游戏的时候仍然继续听他自己的音乐,例如,当这个
游戏中的背景音乐不是非常重要的时候。
为了改变默认的让其他应用程序停止播放的设置,我们需要修改 ...