2012-11-08 34 views
0

我将iPod播放器合并到我的应用程序中。我可以创建一个队列,然后播放歌曲。我无法获得当前歌曲的属性值。我已经注册了通知,日志显示通知正在触发。为什么我的MPMediaItem NowPlayingItem返回null?

MPMediaItem *currentItem = self.musicPlayer.nowPlayingItem; 
NSLog(@"currentItem = %@", currentItem); 

日志输出显示:CURRENTITEM =(空)

我跑的Xcode 4.5.2的iOS 6.0。

任何帮助,非常感谢。

回答

2

对于任何可能遇到相同问题的人,问题是我在运行我的应用程序后同步了我的音乐。您需要遵守图书馆的变化:

MPMediaLibraryDidChangeNotification 

[[MPMediaLibrary defaultLibrary] beginGeneratingLibraryChangeNotifications]; 
+0

看起来很有希望。谢谢...我正在寻找一种方法来观察媒体项目的变化。 –

+0

我可以观察云物品状态的变化吗? –

1

你在你的代码中写道NSLog(@"currentItem = %@", currentItem);但也许你没有一个完整的了解MPMediaItem是什么。

MPMediaItem不是NSString,这就是为什么你在这里得到null。 MPMediaItem具有很多属性,包括歌曲标题,专辑名称和艺术家名称。要访问MPMediaItem的属性(如标题),请使用valueForProperty:方法。

NSLog(@"currentItem = %@", [currentItem valueForProperty:MPMediaItemPropertyTitle]) 

就是这样。

0

我也有,我偶然混合应用播放器

[MPMusicPlayerController applicationMusicPlayer] 

和iPod播放器

[MPMusicPlayerController iPodMusicPlayer] 

我用的是iPodMusicPlayer用于播放音乐,并试图调整音量的问题应用程序MusicPlayer意外。

所以只是要小心不要无意间混合;-)