Это может быть очень поздно ответ, но, как я заметил, что там не много Q/Как насчет воспроизведения звука и пультов дистанционного управления, поэтому я надеюсь, что мой ответ поможет другим, у кого такая же проблема:
В настоящее время я использую AVAudioPlayer
, но метод удаленного управления, который равен - (void)remoteControlReceivedWithEvent:(UIEvent *)event
, не должен быть связан с типом используемого вами игрока.
Чтобы получить вперед и назад кнопки на работе блокировки экрана, выполните следующее:
В viewDidLoad
методе ваш взгляд контроллера добавить следующий код:
//Make sure the system follows our playback status - to support the playback when the app enters the background mode.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
Затем добавить эти методы: viewDidAppear:
: (если они еще не реализованы)
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
//Once the view has loaded then we can register to begin recieving controls and we can become the first responder
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
viewWillDisappear:
(если не реализован уже)
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
//End recieving events
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}
И:
//Make sure we can recieve remote control events
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
//if it is a remote control event handle it correctly
if (event.type == UIEventTypeRemoteControl)
{
if (event.subtype == UIEventSubtypeRemoteControlPlay)
{
[self playAudio];
}
else if (event.subtype == UIEventSubtypeRemoteControlPause)
{
[self pauseAudio];
}
else if (event.subtype == UIEventSubtypeRemoteControlTogglePlayPause)
{
[self togglePlayPause];
}
else if (event.subtype == UIEventSubtypeRemoteControlBeginSeekingBackward)
{
[self rewindTheAudio]; //You must implement 15" rewinding in this method.
}
else if (event.subtype == UIEventSubtypeRemoteControlBeginSeekingForward)
{
[self fastForwardTheAudio]; //You must implement 15" fastforwarding in this method.
}
}
}
Это работает отлично в мое приложение, однако, если вы хотите, чтобы иметь возможность получать события дистанционного управления во всех контроллерах зрения, то вы должны установить его в AppDelegate
.
ПРИМЕЧАНИЕ!Этот код работает нормально на данный момент, но я вижу еще два подтипа: UIEventSubtypeRemoteControlEndSeekingBackward
и UIEventSubtypeRemoteControlEndSeekingBackward
. Я не уверен, что они должны быть реализованы или нет, если кто-то знает об этом, сообщите нам об этом.
Как я могу воспроизводить звуки с помощью MPMoviePlayerController? –