9

Ich habe einen Streaming-Musik-Player gemacht und es funktioniert gut im Vordergrund. Aber im Hintergrund iOS4, es spielt nicht automatisch das nächste Lied. (Fernbedienung funktioniert) Der Grund ist AudioQueueStart return -12985.AudioQueueStart fail -12985

Ich überprüfe bereits die Audiositzung. es ist in Ordnung. Ich benutze AudioQueueStart, wenn es beginnt, die Musik zu spielen. Wie können Sie AudioQueueStart entfernen?

- (void)play 
{ 
    [self setupAudioQueueBuffers]; // calcluate the size to use for each audio queue buffer, and calculate the // number of packets to read into each buffer 
    OSStatus status = AudioQueueStart(self.queueObject, NULL); 
} 

las ich die Antwort im Internet über die AudioQueueStart Thema scheitern.

Eine Sache zu prüfen ist, dass die AudioSession zuerst aktiv ist. In meinem Fall hatte ich vorher die Sitzung einen neuen Songs zwischen Song Änderungen inaktiv vor dem Start: AudioSessionSetActive(false);

Sobald ich diese AudioQueueStart entfernt funktioniert gut vom Hintergrund ab.

+0

Wenn Ihr Update die tatsächliche Lösung ist, können Sie es als Antwort auf Ihre Frage (der Vollständigkeit halber) posten? –

+0

Haben Sie das herausgefunden? Ich frage, weil es keine akzeptierte Antwort gibt .. –

Antwort

2

Ich habe auch vor Wochen mit solchen Problemen konfrontiert. Ich habe zwei Tage gebraucht, um eine Lösung zu finden, und ich habe sie gefunden. Kann dieser Link sein hilft (es ist offizielle Antwort): http://developer.apple.com/library/ios/#qa/qa1668/_index.html

Stellen Sie sicher, dass Sie Sitzung von ApplicationDidEnterBackground Aufgabenhandler aktivieren. Jetzt kann meine Anwendung Ton im Hintergrund abspielen.

1

Siehe this.

Sie müssen wahrscheinlich, schließen Folgendes ein:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

Nach unten gibt es eine Wiederholung der ist, wie wichtig diese Linie ist. Da es in keinem der drei Audio-Audioguides (AVFoundation, AudioSession oder AudioQueue) erwähnt wird, kann es leicht übersehen werden.

3

Meiner Erfahrung nach tritt die Nachricht -12985 auf, weil in einer anderen App bereits eine Audiositzung aktiv ist, wenn Sie versuchen, die Wiedergabe in Ihrer App zu starten. Die Optionen bestehen darin, 1) den Benutzer anzuweisen, die andere App zu schließen, oder 2) den Mischmodus einzustellen (siehe kAudioSessionProperty_OverrideCategoryMixWithOthers).

Der Nachteil des Mix-Modus ist, wenn Sie auf Bildschirm-Screen-Art oder Fernbedienungen angewiesen sind, funktionieren sie nicht mit dem Mix-Modus eingestellt.

0

Ich habe das gleiche Problem. Ich registriere den AudioSessionInterruptionListener, pausiere den Ton beim Telefonanruf, setze ihn nach dem Anrufende fort. Rufen Sie jedoch den Fehlercode -12985 ab, wenn Sie AudioQueueStart zum Fortsetzen aufrufen. Meine Lösung ist, dass ich versuche, AudioQueueStart nach 0,02s aufzurufen. Ich kenne den Grund nicht.

0

Auf iOS7 gab AudioQueueStart '! Int' ('tni!') Zurück, obwohl ich sicher bin, dass es niemanden überraschen würde, dass es nicht in den Dokumenten oder Kopfzeilen dokumentiert ist. Es war das gleiche Problem, und das gleiche Problem (Einstellung der Audio-Session im Hintergrund Task-Handler aktiviert) funktionierte für mich.