Übernahme der Audiositzung

8

Meine App unterstützt entweder Audio von einer externen Musik-App (wie Pandora) oder spielt in der App mit einem AVPlayer, um AVPlayerItem von der iPod-Bibliothek abzuspielen.

In meinem AppDelegate rufe ich an: - (BOOL) Anwendung: (UIApplication *) Anwendung didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {

%Vor%

...

Beachten Sie, dass ich mich auch für eine Unterbrechung registriere.

Wenn also die App gestartet wird, während Pandora spielt, wird Pandora weiterspielen.

Später, wenn sich der Benutzer entschließt, Musik von der iPod-Bibliothek abzuspielen, rufe ich an:     [[AVAudioSession sharedInstance] setKategorie: AVAudioSessionCategoryPlayback withOptions: 0 error: nil]; und um sicher zu gehen, dass ich Fernsteuerungs-Ereignisse erhalte, rufe ich an:     [self werdenFirstResponder];     [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

Bis hier läuft alles gut: App spielt nun Musik aus der iPod-Bibliothek ab (und Pandora wurde gestoppt, als die Kategorie auf Wiedergabe gestellt wurde).

Mein Problem tritt auf, wenn Sie auf die mittlere Taste des Headsets klicken. In der oben beschriebenen Reihenfolge wird beim Klicken auf die mittlere Schaltfläche der interruptListenerCallback aufgerufen! Ich habe erwartet, dass der remoteControlReceivedWithEvent-Callback aufgerufen wird.

Also, meine Frage ist: Wie stellen Sie sicher, dass der externe Musik-Player nicht mehr mit dem Ereignis remote-control umgehen kann, und dass meine App sie bekommt?

In einem anderen Anwendungsfall, in dem Pandora noch nie zuvor gespielt wurde, funktioniert alles: Meine App empfängt die Ereignisse der Fernbedienung wie erwartet; Ich weiß, dass dieser Teil des Codes funktioniert.

Danke

    
eric f. 27.02.2013, 02:41
quelle

0 Antworten