持续创作,加速成长!这是我参与「掘金日新计划 · 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.运行成功
2.可以实现播放,到此完成。
总结
今天学习了Android-视频播放器(VideoView)的使用,收获到了很多,继续加油。