我想找下一首歌的封面,
我一直在用这个
MPMediaQuery* assetQuery = [[MPMediaQuery alloc] init];
NSArray *arrayOfItems = [assetQuery items];
MPMediaItem *mediaItem = [arrayOfItems objectAtIndex:[musicPlayer indexOfNowPlayingItem] + 1];
NSLog(@"%@", [mediaItem valueForProperty:MPMediaItemPropertyTitle]);但是今天我发现播放列表有自己的队列,因为我使用的是iPodMusicPlayer,
如果用户来自播放列表中的iPod音乐播放器,在我的应用程序中,他/她会看到下一个项目的错误封面。
有获得当前MPMediaQuery或MPMediaItemCollection的方法吗?
喜欢
musicPlayer nowPlayingSong;
也许就像
musicPlayer nowPlayingQuery;
请回答,谢谢
发布于 2012-11-02 20:04:41
不是的。苹果不提供访问当前播放列表的权限。这使得对内置音乐播放器进行适当替换的编码变得相当困难。
我不知道为什么苹果会为ipod音乐库提供SDK,但却不能完全访问音乐控制器。
它也很笨重。
发布于 2014-04-28 12:04:17
我.。有点..。找到了一个半工半身的解决办法。
您可以访问播放列表,并且可以在某些播放列表中了解当前的歌曲索引。很可能,如果歌曲真的在多个播放列表中找到-更有可能它的索引将是不同的。(但也可以是一样的!)
所以-我找到了最新的歌曲persistentID:
_nowPlayingIPodItemPersistantID = [[[[MPMusicPlayerController iPodMusicPlayer] nowPlayingItem]
valueForProperty:MPMediaItemPropertyPersistentID] stringValue];然后,通过将indexOfNowPlayingItem与每首歌曲进行比较,找出哪些播放列表是活动的,其中persistentID等于当前歌曲persistentID:
MPMediaQuery *query = [MPMediaQuery playlistsQuery];
int count = 0;
for (MPMediaPlaylist *playlist in [query collections])
{
if(_nowPlayingIPodCollectionItemPersistantID)
{
break;
}
count = 0;
for(MPMediaItem *item in [playlist items])
{
if([[[item valueForProperty:MPMediaItemPropertyPersistentID] stringValue] isEqualToString:_nowPlayingIPodItemPersistantID]
&& [[MPMusicPlayerController iPodMusicPlayer] indexOfNowPlayingItem] == count)
{
_nowPlayingIPodCollectionItemPersistantID = [playlist valueForProperty: MPMediaPlaylistPropertyName];
break;
}
count++;
}
}
//===不完美,但是嘿..。一定要做点什么对吧?
https://stackoverflow.com/questions/8577380
复制相似问题