2012-05-17 4 views
6

Ich habe einen Media Player-Dienst, der einen Internet-Stream spielt, aber ich habe Probleme, wie in meinem Xml der Pufferungsprozentsatz angezeigt wird, in dem Moment, den ich nur anzeigen eine Nachricht, da alle Wege, die ich versuche, gab es mir eine statische lange Zahl. Hier ist der Code von meinem Player Service:Android, Wie die Pufferung% von onBufferingUpdate

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

wie man kann sagen, EstadoRadio ist eine Textansicht in meinem XML, die von myMain Aktivität arbeitet, wo ich die Pufferung% des Stroms angezeigt werden soll. Danke für Ihre Hilfe.

EDIT: Ich habe innerste Fälle gesehen, wo 'Prozent' aus dem onBufferingUpdate (Mediaplayer mp, int Prozent) verwendet werden, etwa wie folgt:

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

aber in meinem Fall Prozent ist immer -2147483648, ich weiß nicht, warum, oder warum es nicht oder Update ändert, ist hier ein wenig von meiner log Katze:

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 

Antwort

3

die Nummer, die Sie sehen, die min-Wert eines 32-Bit-int unterzeichnet ist. Ich würde annehmen und sagen, dass Android einen Prozentsatz nicht zurückgeben kann und in der Tat Ihnen Abfalldaten gibt.

ich Ihren Internet-Stream mit einer Remote-mp3 URL ersetzen würde, um zu sehen, ob Pufferung wieder einen realen Wert bekommt

EDIT (Da dies der Rest des Codes bestätigen würde nicht schuld.): Die Android-Dokumentation In Bezug auf den OnBufferingUpdateListener wird der Anwendungsfall für einen progressiven HTTP-Download erklärt, kein endloser Internet-Stream.

Ich glaube nicht, dass die Fähigkeit, einen Pufferungsprozentsatz anzuzeigen, mit den integrierten Listenern in Android verfügbar ist. Ohne die Android-Quelle zu öffnen, um herauszufinden, an welchem ​​Punkt die MediaPlayer-Klasse beginnt, den Stream abzuspielen (und wenn sie sogar einen Rückruf anbietet), bezweifle ich, dass diese Frage gelöst wird.

Ich wäre jedoch an einer Lösung/Workaround interessiert, wenn jemand einen zur Verfügung stellen kann.

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

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

+0

so ist es eine Möglichkeit, ein buferring% von einem Live-Stream zu erhalten? – zvzej

+0

@zvzej Ich habe meine Antwort mit dem, was ich glaube, korrekt ist aktualisiert. Ich möchte jedoch diesen Fehlerbericht [Bug 832] (http://code.google.com/p/android/issues/detail?id=832) verlinken. Entschuldigung, ich kann keine wirkliche Lösung anbieten. – stevokk