引言
在开发Android应用程序时,我们经常需要实现视频播放功能。而VideoView是Android提供的一个用于播放视频的组件,它简单易用,并且支持多种视频格式。本文将介绍如何使用VideoView组件实现连续播放视频文件的功能。
1.导入视频文件
首先,我们需要将要播放的视频文件导入到Android项目中的“res/raw”文件夹中。如果该文件夹不存在,可以手动创建。将视频文件拖拽到该文件夹中即可。
2.在布局文件中添加VideoView组件
在需要显示视频的Activity的布局文件中,添加一个VideoView组件。可以使用以下代码示例:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="clickListener"
type="android.view.View.OnClickListener" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/common_backgroug"
android:orientation="vertical"
android:gravity="center"
tools:context=".activity.VideoActivity">
<VideoView
android:id="@+id/vv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</layout>
3.在Activity中初始化VideoView并设置视频源
在Activity的Java文件中,初始化VideoView并设置视频源。可以使用以下代码示例:
播放内部存储中的视频
public static String VIDEO_LocalPATH=Environment.getExternalStorageDirectory().toString()+"/视频文件夹/";
initVideoLocalPath(VIDEO_LocalPATH+"start.mp4");//播放
/**
* 播放内部存储中的视频
* @param path
*/
private void initVideoLocalPath(String path) {
dataBinding.vvContent.setVideoPath(path); // 设置视频视图的视频路径
// MediaController mc = new MediaController(this); // 创建一个媒体控制条
// dataBinding.vvContent.setMediaController(mc); // 给视频视图设置相关联的媒体控制条
// mc.setMediaPlayer(dataBinding.vvContent); // 给媒体控制条设置相关联的视频视图
dataBinding.vvContent.start(); // 视频视图开始播放
}
播放raw中的视频
public static String VIDEO_PATH="android.resource://com.test/";
initVideoPath(VIDEO_PATH + R.raw.start);//播放
/**
* 播放Raw中的视频
* @param path
*/
private void initVideoPath(String path) {
dataBinding.vvContent.setVideoURI(Uri.parse(path)); // 设置视频视图的视频路径
// MediaController mc = new MediaController(this); // 创建一个媒体控制条
// dataBinding.vvContent.setMediaController(mc); // 给视频视图设置相关联的媒体控制条
// mc.setMediaPlayer(dataBinding.vvContent); // 给媒体控制条设置相关联的视频视图
dataBinding.vvContent.start(); // 视频视图开始播放
}
4.监听视频播放完成事件
为了实现连续播放视频文件的功能,我们需要监听视频播放完成事件,并在事件触发时重新设置视频源。可以使用以下代码示例:
如果视频播放过程中切换到home再次打开继续播放视频
private int mVideoCurrantPosition = 0;
@Override
protected void onResume() {
super.onResume();
//如果视频播放过程中切换到home再次打开继续播放视频
dataBinding.vvContent.seekTo(mVideoCurrantPosition);
dataBinding.vvContent.start();
}
在视频播放过程中切换到home停止播放视频,并且记录下当前的播放位置
private int mVideoCurrantPosition = 0;
@Override
protected void onPause() {
super.onPause();
//在视频播放过程中切换到home停止播放视频,并且记录下当前的播放位置
mVideoCurrantPosition = dataBinding.vvContent.getCurrentPosition();
dataBinding.vvContent.pause();
}
视频结束回调 判断是否还有未完成播放的视频
int videoIndex=0;//记录当前播放到第几个视频
dataBinding.vvContent.setOnCompletionListener(mp -> {
if (videoIndex < videoArray.length) {
initVideoLocalPath(VIDEO_LocalPATH+videoArray[videoIndex]+".mp4");
videoIndex += 1;
} else if (videoIndex == videoArray.length) {
videoIndex += 1;
initVideoLocalPath(VIDEO_LocalPATH+"end.mp4");
// initVideoPath(VIDEO_PATH + R.raw.end);//播放结束视频
} else {
Intent intent = new Intent(VideoActivity.this, ScanFinshActivity.class);
finish();
startActivity(intent);//结束视频播放完跳转到其他界面
}
});
总结
通过以上步骤,我们可以在Android应用程序中使用VideoView组件实现连续播放视频文件的功能。首先导入视频文件,然后在布局文件中添加VideoView组件,并在Activity中初始化VideoView并设置视频源。同时监听视频播放完成事件,在事件触发时重新设置视频源,以实现连续播放视频文件的效果。
希望本文对你有所帮助!如果有任何问题,请随时提问。