【发布时间】:2011-03-12 14:51:06
【问题描述】:
好的,我正在尝试让用户从他们的 iPod 库中选择歌曲来收听,但我仍然想在我的应用中接收远程控制通知(耳机、锁屏 OSD 等),以便我可以做一些额外的东西。到目前为止,我可以播放 iPod 音乐或耳机事件,但不能同时播放。
这是我目前所知道的......
如果您使用 MPMusicPlayer,您可以轻松地以编程方式访问整个音乐库。但是,无论您使用的是 applicationMusicPlayer 还是 ipodMusicPlayer,它而不是您的应用会接收远程通知。
如果您使用 AVAudioPlayer(Apple 推荐的用于您应用中大多数声音的播放器),您可以轻松获得远程通知,但它本身无法访问 iPod 库。
AVAudioPlayer 可以使用资产 URL 进行初始化,并且 iPod 库(MPMediaItem 类型)中的曲目确实有一个 URL 属性,该属性返回一个 NSURL 实例,文档明确指出它可以与 AVAsset 对象一起使用,但是当您尝试使用该 NSURL 初始化 AVAudioPlayer,它失败了。 (我在 iPod 中使用了“正在播放”的曲目,它是一个 MP3,它确实返回了一个有效的 NSURL 对象,但初始化失败。更糟糕的是,当它是一个 Audible.com 文件时,NSURL 属性完全返回 nil。)
如果您尝试使用 AVAudioPlayer 的实例来获取远程事件(例如,使用空白声音文件),然后同时使用 MPMusicPlayer 类来播放 iPod 音乐,您可以远程控制访问,直到您真正启动 iPod由于您的音频会话被停用并且系统音频会话变为活动状态,因此您在播放时丢失了它。
如果您尝试与 #4 相同的方法,但您将音频会话的类别设置为可混合变体,您的会话不会被停用,但一旦 iPod 开始播放,您仍然会失去远程控制功能。
简而言之,每当播放 MPMusicPlayer 时,我似乎都无法获得远程事件,而且除了使用 MPMusicPlayer 之外,我不知道还有其他方法可以播放 iPod 库中的内容。
任何关于如何解决这个问题的建议都将受到欢迎。有创意或完全疯狂。没关系,只要它有效。
有人吗?任何人?布勒?比勒?
M
【问题讨论】:
标签: iphone ios4 remote-control