我正在开发一个与 iOS 上的 iPod Music 应用程序集成的应用程序。它显示不同的音乐分组(即 MPMediaItemCollections),并允许用户使用 [MPMusicPlayerController ipodMusicPlayer] 在音乐应用程序中播放这些分组。
我的问题是我很难让随机播放功能在我的应用程序和音乐应用程序之间以相同的方式工作。当我播放歌曲时,我会调用:
MPMusicPlayerController* musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
[musicPlayer stop];
MPMediaItemCollection* collection = [self.displayedContainerGroup getMediaItemCollection];
[musicPlayer setQueueWithItemCollection:collection];
[musicPlayer setNowPlayingItem:[container getMediaItem];
[musicPlayer play];
如果关闭随机播放,这将非常有用。如果用户选择一首歌曲(它是专辑的一部分),则会在音乐应用程序中播放专辑并从指定的歌曲开始播放。
但是,如果打开了随机播放,这似乎是先随机播放歌曲,然后按照它们刚刚随机播放的顺序跳转到新的 nowPlayingItem。这样做的问题是,除非 nowPlayingItem 被随机播放到第一个命令,它最终不会播放专辑中的所有歌曲。
MPMusicPlayerController 文档谈到 nowPlayingItem:“要指定播放应该从播放队列中的特定媒体项目开始,请在音乐播放器停止或暂停时将此属性设置为该项目。”
所以,我想知道是否有一种方法可以使这项工作适用于随机播放模式 - 从专辑中的一首用户选择的歌曲开始,然后播放所有其他随机播放的歌曲。还是我应该只创建一个自定义 MPMediaItemCollection 并为此自己洗牌?