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:
- Warum werden falsche Werte übergeben
onBufferingUpdate()
percent
parameter? - Wie, dass zu beheben?
- 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!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht sicher, warum das passiert ist, ich hatte das gleiche problem, aber dieser code kann Ihnen helfen:
Und irgendwo oben in
OnCreateView
ODEROnCreate
percent
dass die Werte, die ich in der Frage genannten.Das problem ist in der Android-Player Treiber-Punkt ist in signed/unsigned-Werte. Hier ist im Zusammenhang Problem.
Lösen es auf JVM-Ebene können Sie diesen code verwenden: