引言

在开发Android应用程序时,我们经常需要实现视频播放功能。而VideoView是Android提供的一个用于播放视频的组件,它简单易用,并且支持多种视频格式。本文将介绍如何使用VideoView组件实现连续播放视频文件的功能。

Android MediaPlayer 循环播放 安卓如何循环播放视频_android


文章目录

  • 1.导入视频文件
  • 2.在布局文件中添加VideoView组件
  • 3.在Activity中初始化VideoView并设置视频源
  • 4.监听视频播放完成事件
  • 总结

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>

Android MediaPlayer 循环播放 安卓如何循环播放视频_开发语言_02

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(); // 视频视图开始播放
    }

Android MediaPlayer 循环播放 安卓如何循环播放视频_ide_03

  • 播放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(); // 视频视图开始播放
    }

Android MediaPlayer 循环播放 安卓如何循环播放视频_android-studio_04

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();
    }

Android MediaPlayer 循环播放 安卓如何循环播放视频_android-studio_05

  • 视频结束回调 判断是否还有未完成播放的视频
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 MediaPlayer 循环播放 安卓如何循环播放视频_开发语言_06


总结

通过以上步骤,我们可以在Android应用程序中使用VideoView组件实现连续播放视频文件的功能。首先导入视频文件,然后在布局文件中添加VideoView组件,并在Activity中初始化VideoView并设置视频源。同时监听视频播放完成事件,在事件触发时重新设置视频源,以实现连续播放视频文件的效果。