Как можно играть музыку из приложения для iPod при тихом получении событий дистанционного управления в приложении?

Хорошо, я пытаюсь позволить пользователю выбрать песни из их библиотеки iPod для слушания, но я все еще хочу получить уведомления дистанционного управления (наушники, блокировка экранируют osd, и т.д.) в моем приложении, таким образом, я могу сделать некоторые дополнительные вещи. До сих пор я могу получить или музыкальное проигрывание iPod, или события наушника, но не обоих одновременно.

Вот то, что я знаю до сих пор...

  1. При использовании MPMusicPlayer у Вас может легко быть программный доступ ко всей музыкальной библиотеке. Однако это, не Ваше приложение, получает удаленные уведомления независимо при использовании applicationMusicPlayer или ipodMusicPlayer.

  2. При использовании AVAudioPlayer (рекомендуемый плеер Apple для большинства звуков в приложении), можно легко получить удаленные уведомления, но это исходно не имеет доступа к библиотеке iPod.

  3. AVAudioPlayer может быть инициализирован с URL актива, и дорожки в библиотеке iPod (введите MPMediaItem), действительно имеют свойство URL, которое возвращает экземпляр NSURL, который в документации говорится явно для использования с объектами AVAsset, но когда Вы пытаетесь инициализировать AVAudioPlayer с этим NSURL, он перестал работать. (Я использовал 'теперь играть' трек в iPod, который был MP3, и он действительно возвращал допустимый объект NSURL, но отказавшую инициализацию. Еще хуже, когда это был файл Audible.com, свойство NSURL утончается, возвратил ноль.)

  4. При попытке использовать экземпляр AVAudioPlayer для получения, удаленные события (скажите с пустым звуковым файлом), то одновременно используют класс MPMusicPlayer, чтобы играть музыку iPod, у Вас есть доступ дистанционного управления, пока Вы на самом деле не запускаете воспроизведение iPod, при котором времени Вы теряете его, так как Ваша аудио сессия деактивируется, и системная сессия аудио становится активной.

  5. Если Вы пробуете то же как № 4, но Вы вместо этого устанавливаете категорию аудио сессии на mixable вариант, Ваша сессия не становится деактивированной, но Вы все еще теряете возможность дистанционного управления, после того как iPod начинает играть.

Короче говоря, каждый раз, когда MPMusicPlayer играет, я, может казаться, не получаю удаленные события, и я не знаю ни о каком другом способе играть содержание из библиотеки iPod кроме при помощи MPMusicPlayer.

ЛЮБЫЕ предложения о том, как обойти это, приветствовались бы. Творческий или утончаются сумасшедшие. Не заботьтесь, пока это работает.

Кто-либо? Кто-либо? Bueller? Bueller?

M

9
задан MarqueIV 23 February 2012 в 00:20
поделиться

2 ответа

ХА! Решено! Я знал, что это возможно! (Спасибо поддержке Async-games.com!)

Вот как воспроизводить музыку iPod в вашем приложении, с фоновой поддержкой и с получением вашим приложением уведомлений о дистанционном управлении.

Вы должны использовать AVPlayer (но не AVAudioPlayer. Не знаю, почему так!), инициализированный с URL актива из MPMediaItem, который вы получили из подборщика библиотеки (или текущего элемента в MPMusicPlayerController или где угодно), затем установить категорию аудиосессии на Playable (НЕ включайте переопределение смешивания, иначе вы потеряете удаленные события!) и добавить соответствующие ключи в ваш файл info.plist, сообщая ОС, что ваше приложение хочет поддерживать фоновый звук.

Готово!

Это позволит вам воспроизводить элементы из вашей библиотеки iPod (кроме файлов Audible.com по некоторым причинам!) в фоновом режиме и по-прежнему получать удаленные события. Конечно, поскольку это ваш аудиоплеер, который отделен от приложения iPod и будет прерывать его работу, вам придется проделать больше работы, но таковы перерывы!

Черт возьми... Хотелось бы, чтобы он работал с файлами Audible.com. (Для тех, кому интересно, причина, по которой он не работает, заключается в том, что URL-адрес актива для файла Audible возвращает ноль. Воняет! Но что поделаешь!)

16
ответ дан 4 December 2019 в 11:39
поделиться

Нет никакого пути обойти это. Если приложение iPod пользователя воспроизводит выбранный iPod, то все удаленные события будут передаваться в iPod, а не в ваше приложение.

0
ответ дан 4 December 2019 в 11:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: