gpt4 book ai didi

ios - 在 MPMusicPlayerController 中随机播放 MPMediaItemCollection,但让用户选择第一项?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:17 26 4
gpt4 key购买 nike

我正在开发一个与 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 并为此自行洗牌?

最佳答案

这似乎奏效了;我不得不关闭随机播放,添加歌曲,切换到正在播放的项目,然后重新打开随机播放:

[musicPlayer stop];
BOOL shuffleWasOn = NO;
if (musicPlayer.shuffleMode != MPMusicShuffleModeOff)
{
musicPlayer.shuffleMode = MPMusicShuffleModeOff;
shuffleWasOn = YES;
}
[musicPlayer setQueueWithItemCollection:mediaItemCollectionIn];
[musicPlayer setNowPlayingItem:mediaItemIn];
if (shuffleWasOn)
musicPlayer.shuffleMode = MPMusicShuffleModeSongs;

[musicPlayer play];

关于ios - 在 MPMusicPlayerController 中随机播放 MPMediaItemCollection,但让用户选择第一项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22075366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com