2012-05-17 11 views
6

Mam usługę odtwarzacza multimediów, która odtwarza strumień internetowy, ale mam problemy z wyświetlaniem w moim xml procentu buforowania, w momencie, kiedy właśnie wyświetlaję wiadomość, ponieważ wszystkie sposoby, jakie wypróbowałem, dały mi statyczną długą liczbę. Oto kod z moich usług zawodnik:Android, Jak wyświetlić buforowanie% z onBufferingUpdate

@Override 
public void onBufferingUpdate(MediaPlayer mp, int percent) { 
    setBufferPosition(percent * getMusicDuration()/100); 
    myMain.EstadoRadio.setText(" Reproductor \n Buffering... "); 
} 

jak można powiedzieć EstadoRadio jest rzutem tekst w moim xml, który pracuje z działalności myMain gdzie chcę wyświetlić buforowania% strumienia. Dzięki za pomoc.

EDIT: Widziałem najgłębszej przypadki, w których wykorzystywana jest 'procent' od onBufferingUpdate (MediaPlayer mp, int procent), coś takiego:

myMain.EstadoRadio.setText(" Reproductor \n" + percent + "%"); 

ale w moim przypadku procent to zawsze -2147483648, ja nie wiem dlaczego, dlaczego nie zmienić lub aktualizacji, tutaj jest trochę z mojego dziennika kota:

05-17 13:34:37.005: V/MediaPlayer(25382): message received msg=3, ext1=-2147483648, ext2=0 
05-17 13:34:37.005: V/MediaPlayer(25382): buffering -2147483648 
05-17 13:34:37.005: V/MediaPlayer(25382): callback application 
05-17 13:34:37.005: V/MediaPlayer(25382): getDuration 
05-17 13:34:37.015: V/MediaPlayer(25382): back from callback 
05-17 13:34:38.016: V/MediaPlayer(25382): message received msg=3, ext1=-2147483648, ext2=0 
05-17 13:34:38.016: V/MediaPlayer(25382): buffering -2147483648 
05-17 13:34:38.016: V/MediaPlayer(25382): callback application 
05-17 13:34:38.016: V/MediaPlayer(25382): getDuration 
05-17 13:34:38.016: V/MediaPlayer(25382): back from callback 

Odpowiedz

3

liczba widzisz jest wartością min podpisanego 32 bit int. Zgaduję i twierdzę, że Android nie jest w stanie zwrócić procentu, a w rzeczywistości daje ci dane o koszach.

bym wymienić strumień internetowy z odległej mp3 URL, aby zobaczyć, czy buforowanie dostaje realną wartość z powrotem

EDIT (Jak by to potwierdzić reszta kodu nie jest winien.): Dokumentacja Android dotyczące OnBufferingUpdateListener wyjaśnia przypadek użycia dla pobierania progresywnego http, a nie nieskończonego strumienia internetowego.

Nie wierzę, że możliwość wyświetlenia procentowego buforowania jest dostępna za pomocą wbudowanych słuchaczy w systemie Android. Bez otwierania źródła Androida, aby dowiedzieć się, w którym momencie klasa MediaPlayer decyduje się rozpocząć odtwarzanie twojego strumienia (i jeśli nawet zapewniają wywołanie zwrotne), wątpię, aby to pytanie zostało rozwiązane.

Byłbym jednak zainteresowany rozwiązaniem/obejściem problemu, jeśli ktokolwiek może je podać.

http://en.wikipedia.org/wiki/Integer_(computer_science)

http://developer.android.com/reference/android/media/MediaPlayer.OnBufferingUpdateListener.html

+0

więc czy jest jakiś sposób, aby uzyskać buferring% ze strumienia na żywo? – zvzej

+0

@zvzej Zaktualizowałem swoją odpowiedź z tym, co uważam za poprawne. Chciałbym jednak połączyć ten raport o błędzie [błąd 832] (http://code.google.com/p/android/issues/detail?id=832). Niestety nie mogę podać rzeczywistego rozwiązania. – stevokk

Powiązane problemy