Ich habe während des Spiels (SpriteKit) mit Telefonanrufen gespielt, um Unterbrechungen zu testen. Ich verwende ein Beispiel aus der ObjectAL-Dokumentation namens "Verwenden von OpenAL Objects und OALAudioTrack" .
Also lasse ich die Bibliothek das automatisch behandeln ...
%Vor%Und es funktioniert aber teilweise. Zum Beispiel, mit der einfachen Einrichtung mit 3 Sounds bekomme ich die nächste Fehlermeldung:
OALAudioSession activateAudioSession]: Audio konnte nicht aktiviert werden Sitzung nach 2 Versuchen: Fehler Domain = NSOSStatusErrorDomain Code = 561015905 "Der Vorgang konnte nicht abgeschlossen werden. (OSStatus-Fehler 561015905.) "
Error 561015905 == 0x21706C61 == !pla
und Verweis auf den in AVAudioSession.h deklarierten Fehler:
AVAudioSessionErrorCodeCannotStartPlaying = '! pla', / * 0x21706C61, 561015905
Und tatsächlich funktioniert das, es gibt zwei gescheiterte Versuche, der dritte war erfolgreich, nichts kann bemerkt werden, weil alles schnell ist und alles scheint so zu funktionieren, wie es sollte.
Ich habe bemerkt, dass ich, wenn ich mehr Sounds (sagen wir 20) hinzufüge, dieselben Nachrichten bekomme:
Die Audiositzung konnte nach 20 Versuchen nicht aktiviert werden:
Danach ist die Sitzung aktiviert. Dann habe ich gerade Debugging-Nachricht in relevanter Methode hinzugefügt:
OALAudioSession.m
%Vor%Nach 20 erfolglosen Versuchen bekomme ich schließlich eine Nachricht, die besagt: "Sitzung nach 21 Versuchen aktiviert"
Aber da kMaxSessionActivationRetries auf 40 gesetzt ist, wird die Soundwiedergabe möglicherweise "unterbrochen", da die Anzahl der Versuche leicht über die erlaubten 40 Versuche hinausgehen kann. Ich bin mir bewusst, dass ich diesen Wert ändern kann, aber das löst das Problem nicht wirklich.
Vermisse ich etwas Wichtiges hier? Ich dachte, wenn die handleInterruptions
-Eigenschaft auf YES gesetzt ist, müssen wir keine manuelle Unterbrechung / Session-Behandlung vornehmen? Ich teste auf iPhone 6 & amp; iOS8, wenn das wichtig ist. Könnte irgendjemand etwas Licht darauf werfen?
Tags und Links objective-c sprite-kit avaudiosession interruption objectal