我正在構建一個包含媒體播放器的應用程序(我正在使用iOS SDK 4.2)。當播放給定的歌曲時,我可以訪問幾乎所有的屬性,但我無法訪問MPMediaItemPropertyBeatsPerMinute。在歌曲上訪問BPM字段(MPMediaItemPropertyBeatsPerMinute不工作)
每次都返回null。
的Apple doc狀態:
每分鐘的媒體項的音樂節拍,對應於「BPM」領域在iTunes中獲取信息對話框中的信息選項卡的數量。 Value是表示NSUInteger數據類型的NSNumber對象。
適用於iOS 4.0及更高版本。
在MPMediaItem.h中聲明。
請注意,我使用的歌曲在BPM字段中包含BPM數據。我知道它並未默認設置。
我一直在努力的代碼是:
MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
// ...
MPMediaItem *currentItem = [musicPlayer nowPlayingItem];
if (currentItem != NULL) {
NSLog([NSString stringWithFormat:@"%@", [currentItem valueForProperty:MPMediaItemPropertyBeatsPerMinute]]);
}
上面的代碼吐出「(空)」,每首歌曲。
由於我能夠以這種方式訪問當前歌曲的所有其他屬性,我相信這可能是SDK中的一個錯誤。
所以,我的問題稍微有兩點。
- 我這樣做是錯誤的,還是這是SDK中的一個已知錯誤?
- 我還可以怎樣去檢索歌曲上的BPM數據?
我已經看到了幾個貼子,說這在iOS 4.2+中有所變化。您可能會測試構建一個較舊的iOS測試,看看它是否有效。 http://www.iphonedevsdk.com/forum/iphone-sdk-development/65342-mpmediaitempropertybeatsperminute-does-not-work-4-2-a.html – NWCoder 2011-03-18 17:28:47
不是答案,但不應該是'NSLog(@ 「%@」,[currentItem valueForProperty:MPMediaItemPropertyBeatsPerMinute]);' – 2011-03-19 14:57:17