2011-12-02 2 views
18

W Android docs, istnieje stała zdefiniowana MEDIA_ERROR_SERVER_DIED który jest opisany jako: serwerCo oznacza MEDIA_ERROR_SERVER_DIED?

Mediów zmarł. W takim przypadku aplikacja musi zwolnić obiekt MediaPlayer i utworzyć instancję nowego.

Wydaje się to bardzo niejasne. Co to znaczy, że serwer Media umarł? Dlaczego miałby umrzeć? Czy jest to właściwe, aby poradzić sobie z nim, natychmiast próbując ponownie grać?

Odpowiedz

8

W systemie Android większość działań multimedialnych (dekodowanie/kodowanie) odbywa się w serwerze multimediów, z wyjątkiem ograniczonych przypadków, takich jak odtwarzanie plików lokalnych za pomocą kodeku oprogramowania. Android Mediaserver rutynowo zawiesza się (przerywa) na błędach sprzętowych, niepoprawnie sformatowanych plikach lub danych. Tak, przepraszam!

Ponieważ wiele działań ma wspólny serwer multimediów, błąd w którymkolwiek z działań może spowodować awarię serwera multimediów. Zwykle dzieje się tak, gdy działanie w tle, takie jak skaner multimediów lub Autoefaliczne filmy w Google+, próbuje zeskanować uszkodzony lub po prostu nieobsługiwany plik. W takim przypadku pozostałe procesy korzystające z serwera mediów otrzymują powiadomienie. To powiadomienie jest przekazywane do aplikacji w przypadku MediaPlayer lub MediaRecorder.

Gdy serwer multimediów zginie, zostanie natychmiast uruchomiony ponownie. Mimo że serwer umiera, obiekt proxy w aplikacji jest wciąż żywy i używa zasobów. Stąd potrzeba zwolnienia obiektu. Powinno być bezpieczne utworzenie nowego natychmiast po powiadomieniu.

-2

Oznacza to, że serwer, z którego przesyłane jest dane, nieoczekiwanie zakończył połączenie. Może się zdarzyć, zazwyczaj jest to związane z błędem "Połączenie resetuj przez peera".

Możesz spróbować ponownie nawiązać połączenie tak, być może po odczekaniu.

1

Jednym z warunków, który powoduje to, gdy MediaPlayer nie otrzymuje lub przestaje odbierać strumień wideo z serwera. Jeśli błąd konsekwentnie wystąpi natychmiast (tzn. Jeśli w ogóle nie zostanie odebrane żadne wideo), możesz chcieć, aby nic (zapora, VPN itp.) Nie blokowało twojej trasy do serwera.