iPhone - AVAudioPlayer, kAudioSessionCategory_AmbientSound e la musica di iPod
Domanda
Sto utilizzando il seguente Audio Session nella mia app delegato:
AudioSessionInitialize(NULL, NULL, NULL, self); UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); AudioSessionSetActive(true);
Voglio che l'utente sia in grado di riprodurre la musica di iPod e utilizzare la mia app, allo stesso tempo, che è grande e funziona bene ... la mia app archi fuori e permette la musica di iPod per riprodurre.
Il problema che sto avendo è ... dopo che l'utente esce la mia app, va in app iPod e pause, quando tornano nella mia app, nessuno del mio lavoro suoni. E 'come se pensa ancora la sessione iPod è attiva, anche se non sta giocando qualsiasi tipo di musica!
Io fondamentalmente voglio solo riattivare la mia sessione audio dopo la musica di iPod è in pausa. Così com'è, dopo che ho mai ha suonato musica tramite l'applicazione iPod, io sono totalmente in grado di ottenere il mio app di suoni di nuovo a meno che non ricompilazione. :( Qualcuno ha qualche idea?
Modifica:. Ho dimenticato di dire che sto utilizzando un'implementazione di base della classe AVAudioPlayer per riprodurre l'audio del mio app
Grazie!
Soluzione
Ok Ho pensato di tenere tutti ha scritto in caso aiuta qualcun altro ... quello che ho fatto è stato probabilmente sorta di hacker, ma sembra fare il trucco!
UInt32 isPlaying; UInt32 propertySize = sizeof(isPlaying); OSStatus status; // check to see if their iPod music is playing status = AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &isPlaying); // set the session category accordingly if(!isPlaying) { NSLog(@"...SoloAmbientSound"); UInt32 sessionCategory = kAudioSessionCategory_SoloAmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); }else{ NSLog(@"...AmbientSound"); UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); }