2011-11-10 16 views
12

Moja aplikacja używa AVAudioPlayer do odtwarzania list odtwarzania audio. Nie zmieniłem kodu między iOS4.3 a iOS5. Jednak dźwięk na iOS5 zatrzymuje się na blokadzie ekranu, mimo że ustawiłem kategorię AVAudioSessionCategoryPlayback.AVAudioPlayer przestaje grać na blokadzie ekranu, mimo że kategoria to AVAudioSessionCategoryPlayback

Testowałem kod na urządzeniach z systemem iOS4.3 i iOS5, a ten problem występuje na urządzeniu iOS5.

Czy ktoś inny napotkał ten problem? Brakuje mi wiedzy, ponieważ nie wiem nawet, od czego zacząć debugowanie tego problemu. Moje debugowanie rozpoczęło się i zakończyło sprawdzaniem ustawienia AVAudioSessionCategory.

Kod gdzie Robię to jest:

[[AVAudioSession sharedInstance] setDelegate: self]; 
NSError *setCategoryError = nil; 
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError]; 

Edit:

już wdrożone i obsługiwane audioPlayerBeginInterruption

Edit # 2: Solved! Dzięki Rhythmic Fistman's Answer

Oto co się działo i co zrobiłem. Zmiany w iOS5 powodują teraz przeniesienie aplikacji na tło, nawet gdy ekran zostanie zablokowany. Oznacza to, że musisz włączyć dźwięk tła w swojej aplikacji i ustawić jakikolwiek view/viewcontroller obsługujący to audio jako pierwszą odpowiedź.

Krok 1: Enable background audio in your app

Krok 2: Enable remote events and become the first responder on the viewcontroller/view responsible for handling your audio playlist

UWAGA: Upewnij się, aby sprawdzić na urządzeniu. Symulator sprawi, że będzie wyglądać, jakby kod nie działał.

Odpowiedz

12

Blokada ekranu zmieniła się w systemie iOS5, teraz przesyła aplikację do tła, więc jeśli chcesz, aby dźwięk był kontynuowany, musisz dodać "audio" jako UIBackGroundModes do pliku Info.plist.

Najbliższą rzeczą, jaką mogę znaleźć w dokumentacji tego jest kilka Apple devforumposts (wymagane logowanie).

+0

Dzięki! Brakowało mi tego ... Wprowadziłem zmiany do pliku plist, ale i tak nie pomogło. Jednak jest to dobry początek do pewnego postępu ... – Sid

+1

Okazuje się, że nie działa w symulatorze, ale działa na urządzeniu! Dziękuję Ci!Następnym krokiem jest dla mnie ustawienie zadania tła, które będzie wyświetlane na liście odtwarzania, ponieważ zatrzymuje się po odtworzeniu bieżącego utworu. – Sid

+0

Kiedy skończę z tym problemem, wrócę i zredaguję to pytanie, aby pomóc następującemu nieświadomemu wędrowcowi: D – Sid

1

Nie jestem zbytnio używany z dźwiękiem, ale czy patrzyłeś na przerywniki? Czytałem coś, co mówiło (w moich wspomnieniach), że dźwięk może zostać zatrzymany, gdy dojdzie do przerwy w grze, a twoim zadaniem jest sprawić, by gra była odtwarzana ponownie.

Ale to tylko coś, co pochodzi z mojej pamięci. To pomaga ?

+0

Cześć Oliver, dziękuję za odpowiedź. Zaimplementowałem interfejs AudioPlayerBeginInterruption i ustawiłem punkt przerwania w tej metodzie. Punkt przerwania nie jest trafiony, więc nie sądzę, że to jest przyczyna, niestety. :) – Sid

+0

@Sid: Jak chcesz, mogę zostawić tam swoją odpowiedź, aby pomóc innym zobaczyć postęp twoich prób, lub możesz wstawić go jako zmianę w swoim pytaniu, a następnie mogę usunąć moją odpowiedź, jeśli chcesz niech twoje pytanie zostanie oznaczone jako "brak odpowiedzi". Jak chcesz. – Oliver

+0

Zostaw odpowiedź :) Będę również wprowadzić zmiany w pytaniu .... dzięki – Sid