android 高级之旅 (五) VideoView 和 Vitamio的基本用法
来源:互联网 发布:算法入门经典书籍推荐 编辑:程序博客网 时间:2024/06/05 03:18
一、 VideoView
(一)、使用要点
1.通过videoView.setVideoURI(Uri.parse(file.getAbsolutePath()));设置要播放的数据源
2.可以使用系统自带的控制栏,创建方式如下:
MediaController mediaController = new MediaController(this);
3.使用系统自带的控制栏时需要将VideoView和控制栏进行双向绑定。示例如下:
//将MediaController和VideoView绑定到一起
videoView.setMediaController(mediaController);
//双向绑定,将VideoView绑定到MediaController
mediaController.setMediaPlayer(videoView);
4.可以根据业务需求调整控制栏的位置:
//设置MediaController的左上右下的位置
mediaController.setPadding(0,0,0,200);
(二)、示例代码
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); videoView = (VideoView) findViewById(R.id.video_view); //设置播放文件的uri File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "曾经的你.mp4"); videoView.setVideoURI(Uri.parse(file.getAbsolutePath())); MediaController mediaController = new MediaController(this); //设置MediaController的左上右下的位置 mediaController.setPadding(0,0,0,200); //将MediaController和VideoView绑定到一起 videoView.setMediaController(mediaController); //双向绑定,将VideoView绑定到MediaController mediaController.setMediaPlayer(videoView); //播放视频// videoView.start(); } public void play(View view) { videoView.start(); } public void pause(View view) { videoView.pause(); }}
二、 Vitamio
(一)、三方类库引用步骤
1.创建一个空的Library
2.将Vitamio库文件中的res,src,AndroidManifest.xml文件拷贝到新创建的Library的src\main目录下
3.将Vitamio库文件中的libs文件夹下的四个文件夹拷贝到新创建的库文件的Libs文件夹下
4.在新创建的文件下创建一个jniLibs文件夹(new–>Folder–>JNI Folder),在创建的过程中,选择change folder location,然后将文件名修改为jniLibs
5.修改库文件的gradle,将sourceSets { main { jni.srcDirs = [‘src/main/jni’, ‘src/main/jniLibs’] } }改为sourceSets { main { jniLibs.srcDirs = [‘libs’] } }
6.给App工程添加依赖
注意:1-5也可以通过导入类库的方式添加,导入完成后注意修改gradle文件中buildToolsVersion节点的值。
(二)、使用要点
1.可以使用Vitamio播放网络视频
2.Vitamio的用法和VideoView基本一致
3.使用Vitamio播放网络视频时一定要初始化,初始化代码如下:
Vitamio.initialize(this)
4.使用Vitamio播放网络视频时可以设置缓冲监听,设置方式如下:
//设置缓冲监听videoView.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() { //percent表示缓冲百分比 @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { cachePercent.setText("已缓冲:" + percent + "%"); }});videoView.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { switch (what) { //开始缓冲 case MediaPlayer.MEDIA_INFO_BUFFERING_START: cachePercent.setVisibility(View.VISIBLE); netSpeed.setVisibility(View.VISIBLE); videoView.pause(); break; //缓冲结束 case MediaPlayer.MEDIA_INFO_BUFFERING_END: cachePercent.setVisibility(View.GONE); netSpeed.setVisibility(View.GONE); videoView.start(); break; //正在缓冲 case MediaPlayer.MEDIA_INFO_DOWNLOAD_RATE_CHANGED: netSpeed.setText("下载速度:" + extra + "kb/s"); break; } return true; }});
(三)、示例代码
public class MainActivity extends AppCompatActivity { private TextView cachePercent; private TextView netSpeed; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cachePercent = (TextView) findViewById(R.id.cache_percent); netSpeed = (TextView) findViewById(R.id.net_speed); //当初始化成功时再来加载网络视频 if (Vitamio.initialize(this)) { final VideoView videoView = (VideoView) findViewById(R.id.video_view); videoView.setVideoURI(Uri.parse("http://112.253.22.157/17/z/z/y/u/zzyuasjwufnqerzvyxgkuigrkcatxr/hc.yinyuetai.com/D046015255134077DDB3ACA0D7E68D45.flv")); MediaController controller = new MediaController(this); videoView.setMediaController(controller); controller.setMediaPlayer(videoView); //设置缓冲监听 videoView.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() { //percent表示缓冲百分比 @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { cachePercent.setText("已缓冲:" + percent + "%"); } }); videoView.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { switch (what) { //开始缓冲 case MediaPlayer.MEDIA_INFO_BUFFERING_START: cachePercent.setVisibility(View.VISIBLE); netSpeed.setVisibility(View.VISIBLE); videoView.pause(); break; //缓冲结束 case MediaPlayer.MEDIA_INFO_BUFFERING_END: cachePercent.setVisibility(View.GONE); netSpeed.setVisibility(View.GONE); videoView.start(); break; //正在缓冲 case MediaPlayer.MEDIA_INFO_DOWNLOAD_RATE_CHANGED: netSpeed.setText("下载速度:" + extra + "kb/s"); break; } return true; } }); videoView.start();// videoView.pause();// videoView.stopPlayback(); } }}
- android 高级之旅 (五) VideoView 和 Vitamio的基本用法
- 播放视频VideoView和SurfaceView(它是父类)(查看api)(更高级的查看vitamio)
- android 高级之旅 (七) CoordinatorLayout 的基本用法
- android 高级之旅 (二 )xUtils3 基本用法
- Android视频媒体相关,VideoView和开源框架vitamio
- Android中Vitamio的VideoView实现网络视频在线播放
- Android VideoView 播放视频 基本用法
- vitamio基本用法
- android之VideoView和SurfaceView
- Android直播之Vitamio的
- android 高级之旅 (一)网络加载框架volley基本用法
- android之视频播放系统VideoView和自定义VideoView控件的应用
- vitamio 开源框架使用(VideoView)
- Android的videoView和mediaController
- android之VideoView和视频播放View的扩展
- android之VideoView和视频播放View的扩展
- android之VideoView和视频播放View的扩展
- android之VideoView和视频播放View的扩展
- muduo详解——1
- SVM, Softmax损失函数
- Idea cannot access
- 地理位置上报逻辑
- Xcopy备份MySql和Www目录
- android 高级之旅 (五) VideoView 和 Vitamio的基本用法
- Dagger2从基础到高级
- kotlin学习day3:函数
- python基础教程-基础知识
- Java继承内部类的问题
- vim 编辑器
- GitHub常见标签生成教学,让你的开源库添加几分姿色。
- $.ajax()方法参数详解
- PHPStorm配置Xdebug调试