Как включить элементы управления iPod в фоновом режиме для управления музыкой, отличной от iPod, в iOS 4?
Хороший пример того, что я пытаюсь выполнить, реализован в последней версии приложения Spotify для iPhone (похоже, у Pandora та же функция) .
Когда Spotify находится в фоновом режиме, двойное касание открывает "многозадачную док-станцию", где элементы управления ipod (воспроизведение / пауза, перемотка вперед и т. Д.) Позволяют управлять воспроизведением музыки в Spotify (не в приложении ipod) . Кроме того, когда сенсорный экран iphone/ipod заблокирован, при двойном касании отображаются похожие элементы управления воспроизведением.
Если вы не знаете, что я имею в виду, вот статья со скриншотами: http://www.wired.com/gadgetlab/2010/07/spotify-updated-for-ios4-ready-to-replace-ipod/
В моем текущем приложении музыка транслируется с сервера (используя AudioStreamer Мэтта Галлахера) . Мне удалось сохранить музыку, играющую в фоновом режиме. Теперь я хотел бы связать свое воспроизведение с "многозадачным доком"/ экраном блокировки.
Должен ли я использовать [MPMusicPlayerController iPodMusicPlayer]
? Как мне поступить?
Дополнительный вопрос: если вы можете сказать мне, как изменить значок ipod на значок моего приложения в "многозадачной док-станции" (Spotify также использовал этот трюк...), это было бы УДИВИТЕЛЬНО.
Любая помощь приветствуется, спасибо.
3 ответа
Проблема решена.
Короче говоря, чтобы включить событие дистанционного управления, 1) используйте:
- (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent
и 2) поставить это ваш вид контроллера:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
Я должен отдать должное Гранту. Он разветвил AudioStreamer Мэтта Галлахера, включив все улучшения ios4 (фоновый звук и работающие пульты дистанционного управления). Вы можете найти его источники вместе с рабочим образцом на github: http://github.com/DigitalDJ/AudioStreamer
Что касается значка: как только вы используете beginReceivingRemoteControlEvents
, значок автоматически переключается на значок вашего приложения. Блестящий!
Вот документация:
Заметьте, однако, что это будет работать только тогда, когда у вас есть активный аудио сеанс в вашем приложении.
Я использую это с AVAudioSession
с AVAudioSessionCategoryPlayback
категория и AVAudioPlayer
а "пульты" работают только когда у меня AVAudioSession
активный и AVAudioPlayer
объект создан.
Элементы управления изменится для вашего приложения, если вы используете новые фоновые аудио API. Информацию можно найти здесь. В частности, разделы о фоновом аудио.