播放视频文件其实并不比播放音频文件复杂,主要是使用 VideoView类来实现的。这个类将视频的显示和控制集于一身,使得我们仅仅借助它就可以完成一个简易的视频播放器。
最近在做视频,遇到这么个需求,播放视频中途退出时候记录当前播放的时间,播放视频,最简单的就是VideoView了,但是,官方并没有提供获取当前播放时间的方法,只有个getCurrentPosition()方法,可以获取当前播放的进度。
一般用VideoView时候都会配合MediaController来使用,MediaController就带有显示当前时间和总时间的功能。于是我就通过查看MediaController的源码,找到了如何实现VideoView获取当前时间的方法。
//将长度转换为时间
//将长度转换为时间
StringBuilder mFormatBuilder = new StringBuilder();
Formatter mFormatter = new Formatter(mFormatBuilder, Locale.getDefault());
//将长度转换为时间
private String stringForTime(int timeMs) {
int totalSeconds = timeMs / 1000;
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int hours = totalSeconds / 3600;
mFormatBuilder.setLength(0);
if (hours > 0) {
return mFormatter.format("%d:%02d:%02d", hours, minutes, seconds).toString();
} else {
return mFormatter.format("%02d:%02d", minutes, seconds).toString();
}
}
这个就是获取当前时间的方法了,这样就可以通过videoview获取当前播放的时间了
String play_time = stringForTime(binding.videoView.getCurrentPosition());
Log.e("播放时间转换后当前播放时间是------", play_time);
String play_sum_time = stringForTime(binding.videoView.getDuration());
Log.e("播放时间总时长是------", play_sum_time);