Android通过VideoView实现视频播放

简介:

在Android系统中,是通过MediaPalyer类播放媒体文件的(包括视频和音频)。虽然这个类已经比较简单了,但是还需要控制各种状态,对于视频还需要设置输出窗口,还是需要仔细研究的。为了避免这些麻烦事儿,Android框架提供了VideoView类来封装MediaPalyer,这个VideoView类非常好用。Android自带的程序Gallery也是用VideoView实现的。本文以实例介绍怎样用VideoView来实现VideoPlayer,本文也参考了Android自带程序Gallery的实现。

创建一个VideoPlayer的工程。main.xml文件如下:

复制代码
 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 >
7 <VideoView android:id="@+id/video_view"
8 android:layout_width="match_parent"
9 android:layout_height="match_parent"
10 android:layout_centerInParent="true" />
11 </LinearLayout>
复制代码

VideoPlayer.java文件如下:

View Code

本例中只是播放外存储器(一般是sd卡)上的1.3gp文件。在onCreate方法中创建了Media control,这个组件可以控制视频的播放,暂停,回复,seek等操作,不需要你实现。

1 mMediaController = new MediaController(this);
2 mVideoView.setMediaController(mMediaController);

然后只需要调用VideoView类的setVideoURI设置播放文件,start方法开始播放即可。 为了节省系统资源,一般需要在Activity的onPause方法中,暂停视频的播放。因为Activity已经不在前台了。在Activity的onResume中恢复视频的播放,因为这是Activity又变成前台程序了。不清楚的朋友可以去查看Activity lifecycle。 你可以通过实现MediaPlayer.OnErrorListener来监听MediaPlayer上报的错误信息。实现MediaPlayer.OnCompletionListener接口,将会在Video播完的时候得到通知,本例只是简单的结束程序。 你可能注意到,我们没有管理MediaPalyer的各种状态,这些状态都让VideoView给封装了,并且,当VideoView创建的时候,MediaPalyer对象将会创建,当VideoView对象销毁的时候,MediaPlayer对象将会释放。这样基本可以傻瓜式的实现媒体播放器了,太Easy了吧。


本文转自天天_byconan博客园博客,原文链接:http://www.cnblogs.com/tiantianbyconan/articles/2375567.html ,如需转载请自行联系原作者
相关文章
|
编解码 Android开发
Android 使用VideoView播放本地视频详解
Android 使用VideoView播放本地视频详解
499 2
|
Android开发
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
|
5月前
|
XML Java Android开发
Android Studio App开发之利用视频视图VideoView播放视频讲解及实战(附源码 超详细必看)
vAndroid Studio App开发之利用视频视图VideoView播放视频讲解及实战(附源码 超详细必看)
624 0
|
缓存 JSON Java
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
431 1
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
|
Java Maven Android开发
Android组件化开发(六)-- 短视频播放组件封装
前面几篇文章我们封装了几个组件化功能组件: 包括:`网络请求组件`,`图片加载请求组件`,`应用保活组件`,`音乐播放组件封装`。 > 每个组件都可以直接拿到自己项目中使用,当然还需根据自己项目要求进行优化。
|
Android开发 容器
Android实现面包屑效果,支持Fragment联动
Android实现面包屑效果,支持Fragment联动
|
Android开发
Android实现连线题效果
Android实现连线题效果
|
移动开发 JavaScript Android开发
通过howler.js实现在Android下的微信浏览器自动播放音频
通过howler.js实现在Android下的微信浏览器自动播放音频
523 0
通过howler.js实现在Android下的微信浏览器自动播放音频
|
数据库 Android开发
android 多级下拉菜单实现教程 greendao使用
android 多级下拉菜单实现教程 greendao使用
233 0
android 多级下拉菜单实现教程 greendao使用
|
监控 前端开发 Java
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
446 0