2012-11-08 115 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意外。

所以只是要小心不要無意間混合;-)