Nik*_*dze 5 java android buffering android-service android-mediaplayer
我有一个MediaPlayer用于流式传输互联网广播的服务:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
除了onBufferingUpdate(...)方法,一切都很好.它在日志中打印出来:
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)
Run Code Online (Sandbox Code Playgroud)
注意:-2147483648是整数MIN_VALUE
虽然percent应该是:
到目前为止已缓冲或播放的内容的百分比(0-100)
问题:
onBufferingUpdate() percent参数中传递的值不正确?谢谢!
小智 0
我不确定为什么会发生这种情况,我遇到了同样的问题,但是这段代码可能会帮助你:
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
// TODO Auto-generated method stub
if (percent < 0 || percent > 100) {
//System.out.println("Doing math: (" + (Math.abs(percent)-1)*100.0 + " / " +Integer.MAX_VALUE+ ")" );
percent = (int) Math.round((((Math.abs(percent)-1)*100.0/Integer.MAX_VALUE)));
}
progressBar.setProgress(percent);
Log.i("Buffering! " , " " +percent );
System.out.println("Buffering: " +percent);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5304 次 |
| 最近记录: |