Android-MediaPlayer.OnBufferingUpdateListener - Anteil der gepufferte Inhalt negativ ist

Ich habe einen Dienst, der verwendet MediaPlayer zum streamen von internet-radio:

public class MediaPlayerService extends Service implements 
    MediaPlayer.OnPreparedListener,
    MediaPlayer.OnBufferingUpdateListener {

    private MediaPlayer mMediaPlayer;
    private WifiLock mWifiLock;

    public int onStartCommand(Intent intent, int flags, int startId) {
        mMediaPlayer = new MediaPlayer();

        mMediaPlayer.setOnBufferingUpdateListener(this);
        mMediaPlayer.setOnPreparedListener(this);

        mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mMediaPlayer.setDataSource(MY_URL);

        //Acquire CPU lock and wi-fi lock

        mMediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
        mWifiLock = ((WifiManager) getSystemService(Context.WIFI_SERVICE))
             .createWifiLock(WifiManager.WIFI_MODE_FULL, "Media Player Wi-Fi Lock");
        mWifiLock.acquire();

        mMediaPlayer.prepareAsync();

        return START_STICKY;
    }

    @Override
    public void onPrepared(MediaPlayer mediaPlayer) {
        mMediaPlayer.start();
    }

    @Override
    public void onBufferingUpdate(MediaPlayer mp, int percent) {
        Log.d("Buffered " + percent);
    }
}

Alles funktioniert Super, außer onBufferingUpdate(...) Methode. Er druckt im Protokoll:

Buffered -819200000 
Buffered -819200000 
Buffered -1228800000 
Buffered -1228800000 
Buffered -1228800000 
Buffered -1228800000 
Buffered -1638400000 
Buffered -1638400000 
Buffered -1638400000 
Buffered -1638400000 
Buffered -2048000000 
Buffered -2048000000 
Buffered -2048000000 
Buffered -2048000000 
Buffered -2147483648 (repeated further on) 

Hinweis: -2147483648 ist MIN_VALUE Integer

Während percent sein soll:

Prozentsatz (0-100) der Inhalt wurde gepuffert oder gespielt
so weit

Fragen:

  1. Warum werden falsche Werte übergeben onBufferingUpdate() percent parameter?
  2. Wie, dass zu beheben?
  3. Ist es irgendeine andere Weise zu bekommen, wie viel Daten gepuffert? Mein Ziel ist es, ein Fortschrittsbalken angezeigt, um Benutzer geben eine Vorstellung davon, Wann genügend Daten gepuffert werden-und radio-Wiedergabe wird gestartet.

Danke!

Schreibe einen Kommentar