2011-06-28 26 views
5

Przykład tego można najłatwiej zrozumieć, myśląc o "Pandora dla Androida".Odtwarzanie wideo po ukryciu aktywności

Moja aktywność polega na odtwarzaniu wykładów wideo w klasie VideoView. Chciałbym móc przełączyć się z tej czynności na inną aktywność (w mojej aplikacji lub na inną aplikację (ekran główny, inna aplikacja)) bez przerwy.

Korzystając z przykładu Pandora, mogłem przejść do widoku "przełączania stacji radiowych" podczas odtwarzania muzyki i mogłem przejść do ekranu głównego i kontynuować płynną nawigację po telefonie.

Czy to możliwe w przypadku filmów lub tylko dźwięku? Czy mogę po prostu odtwarzać dźwięk z pliku wideo, a następnie łatwo się z niego wycofać?

Odpowiedz

4

Ogólny sposób w jaki to się robi (i jak Pandora to obsługuje) to odtwarzanie muzyki z usługi na wątku tła. W tym przypadku VideoView nie może być używany, ponieważ jest Widok i jest powiązany z działaniem.

Podejdę do tego, zaczynając od kodu Android VideoView i dzieląc go na dwie części, jedną do obsługi interfejsu użytkownika i drugą do odtwarzania wideo.

Uruchom MediaPlayer w usłudze działającej w tle i po wyświetleniu aktywności wideo uruchom usługę MediaPlayer.setDisplay() z powierzchnią widoku wideo i wywołaj funkcję MediaPlayer.setDisplay() z wartością NULL, gdy widok wideo jest ukryty.

Oczywiście jest to o wiele bardziej skomplikowane, niż tylko bezpośrednie korzystanie z VideoView i wymaga uruchomienia usługi oraz koordynacji z interfejsem użytkownika. Prawdopodobnie możesz uciec z uruchomieniem MediaPlayer w wątku w tle, a nie usługą.

+0

Czy ktoś to sprawdził? Próbuję, i mam problemy z odłączaniem powierzchni od gracza, gdy działanie przechodzi w tło. – Rawler

+0

Za każdym razem, gdy aktywność zostanie zakończona, odtwarzacz multimediów rozpoczyna się od POWIADOMIENIA "Błąd (1, -2147483648)". 'setDisplay (null)' nie pomaga, 'setSurface (null)' ani. – Rawler

+0

Czy ktoś zdołał to zadziałać? – Petar

Powiązane problemy