我正在构建一个包含媒体播放器的应用程序(我使用的是 iOS SDK 4.2)。当播放一首给定的歌曲时,我几乎可以访问每个属性,但无法访问 MPMediaItemPropertyBeatsPerMinute。
每次都返回null。
The 苹果文档 states:
媒体项目每分钟的音乐节拍数,对应于 iTunes 中“获取信息”对话框中“信息”选项卡中的“BPM”字段。 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]]);
}
上面的代码为每首歌曲输出“(null)”。
由于我能够通过这种方式访问当前歌曲的所有其他属性,因此我相信这可能是 SDK 中的一个错误。
所以,我的问题有两个方面。
- 我是否做错了,或者这是 SDK 中的一个已知错误?
- 我还能如何检索歌曲的 BPM 数据?
我已经使用 iOS SDK 4.3 测试了这个问题,并可以确认它有效。不过你的代码看起来还不错。
这可能是 4.2 SDK 中的一个错误,已在 4.3 中修复。我还可以想象旧版本的 iTunes 无法正确同步 BPM 属性。
你可以尝试使用字符串@"beatsPerMinute"
代替MPMediaItemPropertyBeatsPerMinute
(适用于 iOS 4.3),但我想这不能解决你的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)