Доступ к полю BPM для песни (MPMediaItemPropertyBeatsPerMinute не работает) - PullRequest
2 голосов
/ 09 марта 2011

Я создаю приложение, в котором есть медиаплеер (я использую iOS SDK 4.2).Во время воспроизведения данной песни я могу получить доступ практически ко всем свойствам, но не могу получить доступ к MPMediaItemPropertyBeatsPerMinute.

Каждый раз возвращается значение NULL.

В Apple doc указано:

Количество музыкальных ударов в минуту для элемента мультимедиа, соответствующее полю «BPM» на вкладке «Информация» вдиалоговое окно «Получение информации» в iTunes.Значение - это объект NSNumber, представляющий тип данных NSUInteger.

Доступно в iOS 4.0 и более поздних версиях.

Объявлено в MPMediaItem.h.

Обратите внимание, что композиции, которые я использую DO, имеют данные BPM в поле BPM.Я знаю, что это не установлено по умолчанию.

Код, который я пробовал:

MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
// ...
MPMediaItem *currentItem = [musicPlayer nowPlayingItem];
if (currentItem != NULL) {
  NSLog([NSString stringWithFormat:@"%@", [currentItem valueForProperty:MPMediaItemPropertyBeatsPerMinute]]);
}

Приведенный выше код выплевывает "(ноль)" для каждой песни.

Поскольку я смог получить доступ к каждомуТаким образом, я считаю, что это может быть ошибкой в ​​SDK.

Итак, мой вопрос несколько двоякий.

  1. Я делаю это неправильно или это известная ошибка в SDK?
  2. Как еще я могу получить данные BPM для песни?

1 Ответ

3 голосов
/ 19 марта 2011

Я протестировал эту проблему с iOS SDK 4.3 и могу подтвердить, что она работает. Однако ваш код выглядит хорошо.

Это может быть ошибка в 4.2 SDK, которая была исправлена ​​в 4.3. Я также могу предположить, что более старые версии iTunes не синхронизируют свойство BPM правильно.

Вы можете попытаться использовать строку @"beatsPerMinute" вместо MPMediaItemPropertyBeatsPerMinute (работает в iOS 4.3), но, думаю, это не решит вашу проблему.

...