2013-03-19 7 views
5

Riproduco file audio con AVPlayer. Ho implementato AVAudioSessionInterruptionNotification.Come ottenere interruzione eventi di inizio/fine per AVPlayer

AVAudioSession *session = [AVAudioSession sharedInstance]; 
    NSError *errorInAudio = nil; 
    [session setActive:YES error:&errorInAudio]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(interruption:) name:AVAudioSessionInterruptionNotification object:nil]; 

    [session setCategory:AVAudioSessionCategoryPlayback error:nil]; 

Funziona bene quando si verifica un'interruzione mentre l'app è in primo piano (come il controllo vocale).
Ma ho fatto l'app in modalità background e ho aperto il lettore iPod e ho iniziato a giocare. La sua interruzione non viene chiamata in quel momento e anche quando la mia app è entrata in primo piano.
Quale potrebbe essere il problema. Per favore aiuto.

risposta

3

Se si utilizza AVAudioPlayer è possibile conformarsi alle AVAudioPlayerDelegate allora si può implementare metodi come - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag

Più metodi elencati nella docs.

+0

Grazie per la risposta. Ho ricevuto il delegato di AVAudioPlayer. Ma mi piacerebbe sapere se c'è un modo per implementarlo usando AVPlayer. Puoi suggerire un'idea. –

+0

Non ho molta esperienza con AVPlayer ma questa domanda SO copre lo stesso problema: http://stackoverflow.com/questions/6837002/no-avplayer-delegate-how-to-track-when-song-finished -playing-objective-c-iphon –

+0

Ad ogni modo sto cambiando il mio AVPlayer in AVAudioPlayer. Grazie per il tuo consiglio. –

1

per essere avvisato quando AVPlayer è interrotta in background è possibile ascoltare la notifica del AudioSession

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerStopped) name:AVAudioSessionInterruptionNotification object:nil];