1

我在我的应用程序中加入了 iPod 播放器。我可以创建一个队列,然后播放歌曲。我无法获得当前歌曲的属性值。我已经注册了通知,并且日志显示通知已被触发。

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

日志输出显示:currentItem = (null)

我正在运行 Xcode 4.5.2 iOS 6.0。

任何帮助是极大的赞赏。

4

3 回答 3

3

对于可能遇到相同问题的其他任何人,问题是我在运行我的应用程序后同步了我的音乐。您需要观察库的变化:

MPMediaLibraryDidChangeNotification

[[MPMediaLibrary defaultLibrary] beginGeneratingLibraryChangeNotifications];
于 2012-11-08T17:52:39.763 回答
1

你在你的代码中写过NSLog(@"currentItem = %@", currentItem);,但也许你还没有完全理解 MPMediaItem 是什么。

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

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

像这样的东西。

于 2013-03-18T12:51:59.910 回答
0

我也有不小心把应用播放器混在一起的问题

[MPMusicPlayerController applicationMusicPlayer]

和 iPod 播放器

[MPMusicPlayerController iPodMusicPlayer]

我正在使用 iPodMusicPlayer 播放音乐,并试图调整应用程序MusicPlayer 的音量。

所以请注意不要无意中混合它们;-)

于 2013-12-20T06:26:46.277 回答