我在我的应用程序中加入了 iPod 播放器。我可以创建一个队列,然后播放歌曲。我无法获得当前歌曲的属性值。我已经注册了通知,并且日志显示通知已被触发。
MPMediaItem *currentItem = self.musicPlayer.nowPlayingItem;
NSLog(@"currentItem = %@", currentItem);
日志输出显示:currentItem = (null)
我正在运行 Xcode 4.5.2 iOS 6.0。
任何帮助是极大的赞赏。
我在我的应用程序中加入了 iPod 播放器。我可以创建一个队列,然后播放歌曲。我无法获得当前歌曲的属性值。我已经注册了通知,并且日志显示通知已被触发。
MPMediaItem *currentItem = self.musicPlayer.nowPlayingItem;
NSLog(@"currentItem = %@", currentItem);
日志输出显示:currentItem = (null)
我正在运行 Xcode 4.5.2 iOS 6.0。
任何帮助是极大的赞赏。
对于可能遇到相同问题的其他任何人,问题是我在运行我的应用程序后同步了我的音乐。您需要观察库的变化:
MPMediaLibraryDidChangeNotification
[[MPMediaLibrary defaultLibrary] beginGeneratingLibraryChangeNotifications];
你在你的代码中写过NSLog(@"currentItem = %@", currentItem);,但也许你还没有完全理解 MPMediaItem 是什么。
MPMediaItem 不是 NSString,这就是你在这里得到 null 的原因。MPMediaItem 有很多属性,包括歌曲名称、专辑名称和艺术家姓名。要访问 MPMediaItem 的属性(例如标题),请使用 valueForProperty: 方法。
NSLog(@"currentItem = %@", [currentItem valueForProperty:MPMediaItemPropertyTitle])
像这样的东西。
我也有不小心把应用播放器混在一起的问题
[MPMusicPlayerController applicationMusicPlayer]
和 iPod 播放器
[MPMusicPlayerController iPodMusicPlayer]
我正在使用 iPodMusicPlayer 播放音乐,并试图调整应用程序MusicPlayer 的音量。
所以请注意不要无意中混合它们;-)