2016-06-22 45 views
8

Quindi stavo lavorando a un'app di acquisizione video che riproducesse audio di sottofondo (da Spotify o Apple Music) e ho un piccolo problema in cui c'è una piccola interruzione audio quando apro la mia app mentre audio si sta giocando.Audio di sottofondo per app video iOS

Ecco quello che ho per permettere audio di sottofondo per giocare (situato nel mio didFinishLaunchingWithOptions nel mio AppDelegate classe:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord 
           withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker |  AVAudioSessionCategoryOptionMixWithOthers 
             error:nil]; 
[[AVAudioSession sharedInstance] setActive:YES error:nil]; 

Degli indizi a fermare che a partire interruzione Grazie !!

EDIT

?

Vorrei anche menzionare dopo aver impostato AVAudioSession I sto impostando la mia AVCaptureSession. Inizializzo quindi imposto le proprietà.

self.session.usesApplicationAudioSession = YES; 
self.session.automaticallyConfiguresApplicationAudioSession = NO; 
+1

Invece di passare in 'nil' per l'errore, perché non utilizzare un' NSError' e vedere se viene passato un errore? – JAL

+0

@JAL non riceve alcun errore –

+0

Avete notato questa interruzione solo in spotify? – NeverHopeless

risposta

2

Penso che il motivo dell'interruzione è che si aggiorna la categoria in ogni caso. È possibile utilizzare la funzione di sotto per controllare e aggiornare la categoria solo se è necessaria.

-(BOOL) checkAndUpdateCategory { 
    NSError *error; 
    AVAudioSession *session = [AVAudioSession sharedInstance]; 
    BOOL result = [session.category isEqualToString:AVAudioSessionCategoryPlayAndRecord]; 
    if(!result) { 
     result = [session setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers error:&error]; 
     if(error) { 
      //Handle Error 
      NSLOG(@"Error:%@", error); 
     } 
    } 
    return result; 
} 
+0

Questo non ha funzionato :(Sempre ottenendo quell'interruzione –

+0

Hmm, sai qual è il valore 'session.category' quando apri l'app? –

+0

Rimane come AVAudioSessionCategoryPlayAndRecord –