- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何找到 MPMediaItem
集合中要播放的下一个项目的名称?我更愿意将其存储为 MPMediaItem
。
我有一个 songsViewController
,它有一个包含所有歌曲的 tableView
。这是我的 didSelectRowAtIndexPath
代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
MPMediaItem *selectedItem;
selectedItem = [[songs objectAtIndex:indexPath.row] representativeItem];
MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
[musicPlayer setQueueWithItemCollection:[MPMediaItemCollection collectionWithItems:[songsQuery items]]];
[musicPlayer setNowPlayingItem:selectedItem];
nowPlayingViewController *nowPlaying = [[rightSideMenuViewController alloc]
initWithNibName:@"nowPlayingViewController" bundle:nil];
[self presentViewController:nowPlaying animated:YES completion:nil];
[musicPlayer play];
}
我的 nowPlayingViewController
上有一个 UILabel
,它会在用户选择歌曲时弹出。我想将下一个项目的标题存储在 MediaItemCollection
/queue 中,以便在 UILabel
中 - 所以它是下一首歌曲的预览。
任何帮助将不胜感激,谢谢! :)
最佳答案
保留您的列表(因为您无法在音乐播放器队列中访问)。
@property (nonatomic, strong) NSArray *playlist;
当你这样做时:
[musicPlayer setQueueWithItemCollection:[MPMediaItemCollection collectionWithItems:[songsQuery items]]];
添加:
playlist = [songsQuery items];
要获取上一个/下一个:
-(MPMediaItem *)nextItem
{
int currentIndex = [musicPlayer indexOfNowPlayingItem];
MPMediaItem *nextItem = [playlist objectAtIndex:currentIndex+1];
return nextItem
}
-(MPMediaItem *)previousItem
{
int currentIndex = [musicPlayer indexOfNowPlayingItem];
MPMediaItem *previousItem = [playlist objectAtIndex:currentIndex-1];
return previousItem;
}
重要说明:
我没有检查当前项目是否是播放列表
中的第一个/最后一个(根据您是否想要上一个/下一个)项目。因此要小心 NSArray
的边界,否则你会得到:
NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index Z beyond bounds [X .. Y]
那么previousItem
“存在”吗? nextItem
“存在”吗?
您可能还需要查看:
@property (nonatomic) MPMusicRepeatMode repeatMode
如果 nextItem
可能是第一项,或者前一项是最后一项。
关于ios - MediaItemCollection 中的下一首歌曲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23737913/
我是 Android 编程的新手,我正在尝试制作一个简单的媒体播放器应用程序,该应用程序可以从用户的 SD 卡中提取歌曲并使用户能够播放歌曲。我面临的问题是,当一首歌正在播放时,如果用户点击其他歌曲,
使用 AVAudioPlayer 我们可以使用这种方法循环播放多首歌曲: - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player suc
这是一道系统设计题。 假设我们有一个服务可以在听到歌曲时通知我们。让我们设计一个新服务,它能够返回过去 24 小时内听得最多的前 K 首歌曲。假设我们有大约 10 亿首歌曲和大约 2 亿用户。 将您的
由于我是 Flash CS6 actionscript 3 的新手,有人可以具体地举一个详细的例子,向我解释一下如何向我的播放器添加 2 首歌曲,并且仍然使用当前的播放和暂停按钮来控制它们吗? 非常感
我是一名优秀的程序员,十分优秀!