deveco studio如何展示视频的播放进度
时间: 2024-01-10 18:02:32 浏览: 24
在 Android Studio 中展示视频播放的进度,可以使用 `VideoView` 控件或者 `ExoPlayer` 框架。
如果使用 `VideoView` 控件,可以使用 `OnPreparedListener` 接口中的 `onPrepared` 方法获取视频的总时长 `duration`,然后再使用 `OnSeekBarChangeListener` 接口中的 `onProgressChanged` 方法获取当前进度 `progress`,并将其与总时长比较,计算出当前的播放进度并展示在一个进度条中。
示例代码如下:
```
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
int duration = mp.getDuration();
seekBar.setMax(duration);
}
});
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
videoView.seekTo(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
videoView.pause();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
videoView.start();
}
});
```
如果使用 `ExoPlayer` 框架,可以使用 `Player.EventListener` 接口中的 `onPlayerStateChanged` 方法获取当前播放状态,并在 `onPlayerStateChanged` 方法中计算出当前的播放进度并展示在一个进度条中。
示例代码如下:
```
player.addListener(new Player.EventListener() {
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
if (playbackState == Player.STATE_READY && playWhenReady) {
int duration = (int) player.getDuration();
seekBar.setMax(duration);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
int currentPos = (int) player.getCurrentPosition();
seekBar.setProgress(currentPos);
handler.postDelayed(this, 1000);
}
}, 1000);
}
}
});
```
以上是两种常见的展示视频播放进度的方法,可以根据实际需求选择其中之一进行实现。