package com.zjw.mymultimedia;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.VideoView;
//8.4.2 p307 播放视频
/*
参考网络资源:
1. http://blog.youkuaiyun.com/legend12300/article/details/52573109
Android assets 和 res/raw 区别。读取本地网页,读取文本字体样式,读取视频。
2. http://www.cnblogs.com/zhaowan/p/4743415.html
Android studio相关设置及实现存在于工程目录中的视频播放
*/
/*
在Android 中播放视频的方式有两种:
*第一种方式是使用MediaPlayer 结合SurfaceView 来播放,通过MediaPlayer来控制视频的播放、暂停、进度等;
通过SurfaceView 来显示视频内容;
优点:灵活性高,可自定义
缺点:难度较大
*第二种方式是使用VideoView 来播放,这个类继承了SurfaceView 类,实现了MediaController.
MediaPlayerController 接口(控制媒体播放),另外在VideoView上还有一个用于对媒体播放进行控制
的面板,包括快进、快退、播放、暂停按钮以及一个进度条;
优点:较简单,可直接使用
缺点:灵活性不高
*/
//《第一行代码》中使用的是VideoView类
/*
VideoView类常用方法
setVideoPath() 设置要播放的视屏文件的位置
start() 开始或继续播放视频
pause() 暂停播放视频
resume() 将视频从头开始播放
seekTo() 从指定的位置开始播放视频
isPlaying() 判断当前是否正在播放视频
getDuration() 获取载入的视频文件的时长
*/
//主布局,三个Button(play,pause,replay),一个VideoView显示视频
/*
关于视频资源:
1.书中是存放在SD卡上,需要运行时权限(权限申请参考《第一行代码》笔记(3)),initVideoPath()中代码如下
File file=new File(Environment.getExternalStorageDirectory,"mov.avi");
mVvVideo.setVideoPath(file.getPath());
2.这里是直接将视频文件扔进raw文件夹(res下新建raw文件夹)
3.视频文件必须是Android支持视频格式(3gp,wmv,mp4),并且命名必须是小写字母,数据,下划线
*/
//注:VideoView背后仍是MediaPlayer,VideoView在视频格式支持与播放效率方面有较大不足
public class PlayVideo extends AppCompatActivity {
private VideoView mVvVideo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play_video);
//找到控件
mVvVideo = (VideoView) findViewById(R.id.vv_video);
//初始化播放资源路径
initVideoPath();
}
//初始化播放资源
private void initVideoPath() {
mVvVideo.setVideoURI(Uri.parse("android.resource://"+"com.zjw.mymultimedia"+"/" + R.raw.oppo));
}
//Button点击事件。布局里面写了android:onClick="click"
public void click(View v) {
switch (v.getId()) {
case R.id.btn_play://开始播放
if (!mVvVideo.isPlaying()) {
mVvVideo.start();
}
break;
case R.id.btn_pause://暂停播放
if (mVvVideo.isPlaying()) {
mVvVideo.pause();
}
break;
case R.id.btn_replay://重新播放
if (mVvVideo.isPlaying()) {
mVvVideo.resume();
}
break;
default:
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mVvVideo!=null) {
mVvVideo.suspend();
}
}
}
转载于:https://my.oschina.net/u/3620480/blog/1483951
本文深入探讨了Android中视频播放的两种主要方式:使用MediaPlayer结合SurfaceView和使用VideoView。对比了两者的优缺点,并详细介绍了VideoView类的常用方法及其实现视频播放的具体步骤。
743

被折叠的 条评论
为什么被折叠?



