Android-视频播放器(VideoView)

1,792 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天,点击查看活动详情

前言

  本教程是关于视频播放器的用法介绍,案例采用播放mp4格式,希望对你有所帮助。

1、简介

  • VideoView是使用MediaPlayer来对视频文件进行控制的。
  • VideoView只支持mp4、avi、3gp格式的视频,支持格式相对单一,VideoView支持的格式可以参考MediaPlayer。
  • VideoView可以播放网络视频,支持的网络视频的协议为:Http协议和RTSP协议两种。

2、常用方法

VideoView类为我们提供了十分方便的方法,其主要方法如下:

  • setVideoPath:设置要播放的视频文件的位置
  • start:开始或继续播放视频
  • pause:暂停播放视频
  • resume:将视频从头开始播放
  • seekTo:从指定的位置开始播放视频
  • isPlaying:判断当前是否正在播放视频
  • getCurrentPosition:获取当前播放的位置
  • getDuration:获取载入的视频文件的时长
  • setVideoPath(String path):以文件路径的方式设置VideoView播放的视频源
  • setVideoURI(Uri uri):以Uri的方式设置视频源,可以是网络Uri或本地Uri
  • setMediaController(MediaController controller):设置MediaController控制器
  • setOnCompletionListener(MediaPlayer.onCompletionListener l):监听播放完成的事件
  • setOnErrorListener(MediaPlayer.OnErrorListener l):监听播放发生错误时候的事件
  • setOnPreparedListener(MediaPlayer.OnPreparedListener l):监听视频装载完成的事件

3、案例需求分析

实现对mp4格式的视频进行播放,掌握最基本的用法。

4、具体实现

VideoView控件 布局实现:主要是线性布局和VideoView控件

<LinearLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <VideoView
        android:id="@+id/vv_play"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
    <ImageView
        android:id="@+id/iv_play"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:src="@android:drawable/ic_media_play"
        />

</LinearLayout>

实现代码编写


import androidx.appcompat.app.AppCompatActivity;

import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.VideoView;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private VideoView vv;
    private MediaController controller;
    ImageView iv_play;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vv=(VideoView)findViewById(R.id.vv_play);
        iv_play=(ImageView)findViewById(R.id.iv_play);
        String url="android.resource://"+getPackageName()+"/"+R.raw.kj;
        Uri uri=Uri.parse(url);
        vv.setVideoURI(uri);
        controller=new MediaController(this);
        vv.setMediaController(controller);
        iv_play.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId())
        {
            case R.id.iv_play:
                play();
                break;
        }
    }

    private void play() {
        if(vv!=null&&vv.isPlaying())
        {
            iv_play.setImageResource(android.R.drawable.ic_media_play);
            vv.stopPlayback();
            return;
        }
        vv.start();
        iv_play.setImageResource(android.R.drawable.ic_media_pause);
        vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                iv_play.setImageResource(android.R.drawable.ic_media_play);
            }
        });
    }
}

5、测试

1.运行成功

image.png

2.可以实现播放,到此完成。

image.png

总结

  今天学习了Android-视频播放器(VideoView)的使用,收获到了很多,继续加油。