questo potrebbe essere una risposta molto tardi, ma, come noto, non ci sono molti Q/sui riprodurre file audio e telecomandi, quindi spero che la mia risposta aiuti gli altri che hanno lo stesso problema:
Attualmente sto utilizzando AVAudioPlayer
al momento, ma il metodo di controllo remoto che è - (void)remoteControlReceivedWithEvent:(UIEvent *)event
non deve essere coinvolto con il tipo di lettore che stai utilizzando.
Per ottenere avanti e pulsanti sul lavoro schermata di blocco di riavvolgimento, segui questo:
Nel metodo viewDidLoad
del controller della vista aggiungere il seguente codice:
//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];
Quindi aggiungere questi metodi: viewDidAppear:
: (se non implementato già)
- (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:
(se non è già implementato)
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
//End recieving events
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}
E:
//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.
}
}
}
Questo funziona bene nella mia app, se si vuole essere in grado di ricevere gli eventi di controllo a distanza in tutti i controller di vista, quindi dovresti impostarlo nello AppDelegate
.
NOTA!Questo codice funziona correttamente al momento, ma vedo altri due sottotipi chiamati UIEventSubtypeRemoteControlEndSeekingBackward
e UIEventSubtypeRemoteControlEndSeekingBackward
. Non sono sicuro che debbano essere implementate o meno, se qualcuno ne è a conoscenza, faccelo sapere.
Come posso riprodurre i suoni utilizzando MPMoviePlayerController? –