Video View用于播放一段视频媒体,它继承了SurfaceView,是一个视频控件,包的位置:android.widget.VideoView。
播放一段视频,不可避免地要涉及到开始、暂停、停止等操作,VideoView也为开发人员提供了对应的方法,下面是一些常用的方法。
int getCurrentPosition():获取当前播放的位置。
int getDuration():获取当前播放视频的总长度。
isPlaying():当前VideoView是否在播放视频。
void pause():暂停。
void seekTo(int msec):从第几毫秒开始播放。
void resume():重新播放。
void setVideoPath(String path):以文件路径的方式设置VideoView播放的视频源。
void setVideoURI(Uri uri):以URI的方式设置VideoView播放的视频源,可以是网络URI,也可以是本地URI。
void start():开始播放。
void stopPlayback():停止播放。
setMediaController(MediaController controller):设置MediaController控制器。
setOnCompletionListener(MediaPlayer.onCompletionListenerl):监听播放完成的事件。
setOnErrorListener(MediaPlayer.OnErrorListenerl):监听播放发生错误时的事件。
setOnPreparedListener(MediaPlayer.OnPreparedListenerl)::监听视频装载完成的事件。
与MediaPlayer配合SurfaceView播放视频不同,VideoView播放之前无需编码装载视频,它会在start()开始播放的时候自动装载视频。并且,VideoView在使用完成后,无需编码回收资源。
提到VideoView,不得不介绍MediaController。虽然VideoView提供了方便的API用于播放、暂停、停止等操作,但还是需要编码完成,如果使用MediaController,这些操作都可以省去。
MediaController可以配合VideoView播放一段视频,它为VideoView提供悬浮的操作栏,在操作栏中可以对VideoView播放的视频进行控制,默认情况下,会悬浮显示三秒。它通过MediaController.setMediaPlayer()方法指定需要控制的VideoView,但是仅仅这样是不够的,MediaController的控制类似于双向控制,MediaController指定控制的VideoView,VideoView还需要指定由哪个MediaController来控制,这需要使用VideoView.setMediaController()方法。(www.xing528.com)
下面是MediaController的一些常用方法。
boolean isShowing():当前悬浮控制栏是否显示。
void setMediaPlayer(MediaController.MediaPlayerControlplayer):设置控制的组件。
void setPrevNextListeners(View.OnClickListener next,View.OnClickListener prev):设置上一个视频、下一个视频的切换事件。
通过上面的方法可以看出,setMediaPlayer()指定的并不是一个VideoView,而是一个MediaPlayerControl接口,MediaPlayerControl接口内部定义了一些播放相关的播放、暂停、停止等操作,而VideoView实现了MediaPlayerControl。
下面是MediaController+VideoView播放视频的实例。在Android 2.3中创建应用项目:VideoViewPlay。
(1)在主布局文件activity_main.xml中放置一个VideoView控件,代码如下。
(2)主Activity处理文件MainActivity.java的代码如下。
(3)在源代码目录下新建文件Utils.java,设置网络视频的地址,代码如下。
(4)在配置文件AndroidManifest.xml中增加访问权限,代码如下。
(5)项目运行结果如图8-1所示。
图8-1 项目运行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。