Android下VideoView的研究

    VideoView继承自SurfaceView,实现了MediaController.MediaPlayerControl的接口。在android系统中的包名为android.widget.VideoView。

    VideoView的主要功能是显示一个指定的视频文件。VideoView可以从多个地方载入图片(比如资源或者content provider中)。

    VideoView继承了Android.view.View类中的XML属性、常量、和field(我们常翻译成属性)。在VideoView下有三个构造方法:

VideoView(Context context)
VideoView(Context context, AttributeSet attrs)
VideoView(Context context, AttributeSet attrs, int defStyle)

VideoView的公有的方法有:

//这个方法是在API19中才加入的,一般情况下可以不考虑
void	 addSubtitleSource(InputStream is, MediaFormat format)
//这个方法可以设置视频是否可以暂停。
boolean	 canPause()
//这个方法设置视频是否可以后退
boolean	 canSeekBackward()
//这个方法设置视频是否可以前进。
boolean	 canSeekForward()
//通常是将这个View渲染到canvas上去。
void	 draw(Canvas canvas)
//这个方法如果错误的话会返回0.
int	 getAudioSessionId()
//获取缓冲百分比
int	 getBufferPercentage()
//获取当前的位置
int	 getCurrentPosition()
//获取播放视频的总时间
int	 getDuration()
//判断视频是否处于播放状态
boolean	 isPlaying()
void	 onInitializeAccessibilityEvent(AccessibilityEvent event)

void	 onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info)

boolean	 onKeyDown(int keyCode, KeyEvent event)

boolean	 onTouchEvent(MotionEvent ev)

boolean	 onTrackballEvent(MotionEvent ev)
//停止时
void	 pause()
//取得调整后的尺寸。如果measureSpec对象传入的模式是UNSPECIFIED那么返回的是desiredSize。如果measureSpec对象传入的模式是AT_MOST,返回的将
//是desiredSize和measureSpec对象的尺寸两者中最小的那个。如果measureSpec对象传入的模式是EXACTLY,那么返回的是measureSpec对象中的尺寸大小值。
int	 resolveAdjustedSize(int desiredSize, int measureSpec)
//从暂停中恢复
void	 resume()
//跳转到
void	 seekTo(int msec)
//设置MediaController,方便控制视频播放
void	 setMediaController(MediaController controller)
//媒体在播放完毕时的回调函数
void	 setOnCompletionListener(MediaPlayer.OnCompletionListener l)
//发生错误时的回调函数
void	 setOnErrorListener(MediaPlayer.OnErrorListener l)

void	 setOnInfoListener(MediaPlayer.OnInfoListener l)
//加载完毕后的回调函数
void	 setOnPreparedListener(MediaPlayer.OnPreparedListener l)
//设置视频播放路径
void	 setVideoPath(String path)
//设置URI
void	 setVideoURI(Uri uri)
//视频播放开始
void	 start()
//停止回放
void	 stopPlayback()
//挂起
void	 suspend()

以下是VideoView的protected方法:

void	 onAttachedToWindow()
void	 onDetachedFromWindow()

void	 onLayout(boolean changed, int left, int top, int right, int bottom)
void	 onMeasure(int widthMeasureSpec, int heightMeasureSpec)

以上方法在重写VideoView时实现。

VideoView继承了以下类的方法:

 android.view.SurfaceView
 android.view.View
 java.lang.Object

//接口
 android.graphics.drawable.Drawable.Callback
 android.view.KeyEvent.Callback
 android.view.accessibility.AccessibilityEventSource
 android.widget.MediaController.MediaPlayerControl
时间: 2024-11-16 22:41:21

Android下VideoView的研究的相关文章

Android性能优化案例研究(下)

转自 http://www.importnew.com/4065.html 译者前言:在Android性能优化案例研究(上)中,作者Romain Guy将Falcon Pro这款应用作为例子,通过Android现有的工具追踪和分析了其隐藏的性能问题(重绘).下篇作者将会带来如何解决此类问题的方法和思路. 去掉冗余的图层 为 了去掉重绘我们必须首先理解它从哪里产生的.这就轮到Hierarchy Viewer和Tracer for OpenGL大显身手的时候了.Hierarchy Viewer是AD

Android下拉刷新控件PullToRefresh实例解析_Android

Android中很多时候都会用到上下拉刷新,这是一个很常用的功能,Android的v4包中也为我们提供了一种原生的下拉刷新控件--SwipeRefreshLayout,可以用它实现一个简洁的刷新效果,但今天我们的主角并不是它,而是一个很火的第三方的上下拉刷新控件--PullToRefresh.PullToRefresh包括PullToRefreshScrollView.PullToRefreshListView.PullToRefreshGridView等等很多为我们提供的控件,我们可以在xml

android之VideoView和视频播放View的扩展

1.概念及扩展 VideoView 是android 系统提供的一个媒体播放显示和控制的控件.其结构层次如下: 原型:VideoView extends SurfaceView implements MediaController.MediaPlayerControl 类结构: java.lang.Object ↳ android.view.View ↳ android.view.SurfaceView ↳ android.widget.VideoView 通过VideoView 的原型可知:如

Android下实现非启动界面Wifi连接

Android的网络功能和一般的linux并无太大的区别,我原来以为在Android上连接网络和普通的linux连接网络没有很大区别,事实上区别还是有一些的. 由于项目的需要,我的目标是在Android的界面没有启动之前连接wifi,于是本来的期待是直接在init.rc中加入一些脚本调用即可,但研究了一会儿发现没有那么简单. 首先要感谢anly_jun@baidu贴吧的几篇博文,从http://hi.baidu.com/anly_jun/blog/item/8ecb92d593d144cf50d

关于在android下用ffmpeg和sdl开发播放器的问题

问题描述 关于在android下用ffmpeg和sdl开发播放器的问题 从网上找了个ffmpeg和SDL开发的全格式播放器,但是发现每次播放完毕就会kill掉APP,好像是由于exit(0)执行的结果. 请问有没有人研究过这一块儿,如何只退出当前的activity,回到列表页面,而且下次进来还可以继续播放? 如果把C代码中解码和播放的部分写成线程有用吗? 解决方案 播放过程有没有先放在 Service 中?就像音乐播放器的实现一样. 解决方案二: 没有放在service中,但是放在一个线程中.我

Android下拉刷新上拉加载控件(适用于所有View)_Android

     前面写过一篇关于下拉刷新控件的文章下拉刷新控件终结者:PullToRefreshLayout,后来看到好多人还有上拉加载更多的需求,于是就在前面下拉刷新控件的基础上进行了改进,加了上拉加载的功能.不仅如此,我已经把它改成了对所有View都通用!可以随心所欲使用这两个功能~~     我做了一个大集合的demo,实现了ListView.GridView.ExpandableListView.ScrollView.WebView.ImageView.TextView的下拉刷新和上拉加载.后

Android下拉刷新上拉加载控件(适用于所有View)

前面写过一篇关于下拉刷新控件的文章下拉刷新控件终结者:PullToRefreshLayout,后来看到好多人还有上拉加载更多的需求,于是就在前面下拉刷新控件的基础上进行了改进,加了上拉加载的功能.不仅如此,我已经把它改成了对所有View都通用!可以随心所欲使用这两个功能~~ 我做了一个大集合的demo,实现了ListView.GridView.ExpandableListView.ScrollView.WebView.ImageView.TextView的下拉刷新和上拉加载.后面会提供demo的

Android通过VideoView实现视频播放

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

布局-android 下拉刷新的实现类

问题描述 android 下拉刷新的实现类 求下拉刷新的实现(刷新的主体不单单是listview一种的,而是包含了图片,listvew等组合在一起的),怎么实现啊,求源码 解决方案 需求:项目中的消息列表界面要求实现类似sina微博的下拉刷新:思路:一般的消息列表为ListView类型,将list加载到adapter中,再将adapter加载到ListView中,从而实现消息列表的展示.而下拉刷新要求给消息列表加一个头部,其中有图片(向上/向下箭头)和提示字样(下拉刷新/松开刷新),从而我们需要