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