首页 理论教育 使用MediaController+VideoView播放视频

使用MediaController+VideoView播放视频

时间:2023-06-27 理论教育 版权反馈
【摘要】:void setVideoURI:以URI的方式设置VideoView播放的视频源,可以是网络URI,也可以是本地URI。setMediaController:设置MediaController控制器。并且,VideoView在使用完成后,无需编码回收资源。MediaController可以配合VideoView播放一段视频,它为VideoView提供悬浮的操作栏,在操作栏中可以对VideoView播放的视频进行控制,默认情况下,会悬浮显示三秒。下面是MediaController+VideoView播放视频的实例。在Android 2.3中创建应用项目:VideoViewPlay。在主布局文件activity_main.xml中放置一个VideoView控件,代码如下。

使用MediaController+VideoView播放视频

Video View用于播放一段视频媒体,它继承了SurfaceView,是一个视频控件,包的位置:android.widget.VideoView。

播放一段视频,不可避免地要涉及到开始、暂停、停止等操作,VideoView也为开发人员提供了对应的方法,下面是一些常用的方法。

978-7-111-58810-8-Chapter08-1.jpgint getCurrentPosition():获取当前播放的位置。

978-7-111-58810-8-Chapter08-2.jpgint getDuration():获取当前播放视频的总长度。

978-7-111-58810-8-Chapter08-3.jpgisPlaying():当前VideoView是否在播放视频。

978-7-111-58810-8-Chapter08-4.jpgvoid pause():暂停。

978-7-111-58810-8-Chapter08-5.jpgvoid seekTo(int msec):从第几毫秒开始播放。

978-7-111-58810-8-Chapter08-6.jpgvoid resume():重新播放。

978-7-111-58810-8-Chapter08-7.jpgvoid setVideoPath(String path):以文件路径的方式设置VideoView播放的视频源。

978-7-111-58810-8-Chapter08-8.jpgvoid setVideoURI(Uri uri):以URI的方式设置VideoView播放的视频源,可以是网络URI,也可以是本地URI。

978-7-111-58810-8-Chapter08-9.jpgvoid start():开始播放。

978-7-111-58810-8-Chapter08-10.jpgvoid stopPlayback():停止播放。

978-7-111-58810-8-Chapter08-11.jpgsetMediaController(MediaController controller):设置MediaController控制器。

978-7-111-58810-8-Chapter08-12.jpgsetOnCompletionListener(MediaPlayer.onCompletionListenerl):监听播放完成的事件。

978-7-111-58810-8-Chapter08-13.jpgsetOnErrorListener(MediaPlayer.OnErrorListenerl):监听播放发生错误时的事件。

978-7-111-58810-8-Chapter08-14.jpgsetOnPreparedListener(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的一些常用方法。

978-7-111-58810-8-Chapter08-15.jpgboolean isShowing():当前悬浮控制栏是否显示。

978-7-111-58810-8-Chapter08-16.jpgvoid setMediaPlayer(MediaController.MediaPlayerControlplayer):设置控制的组件。

978-7-111-58810-8-Chapter08-17.jpgvoid setPrevNextListeners(View.OnClickListener next,View.OnClickListener prev):设置上一个视频、下一个视频的切换事件。

通过上面的方法可以看出,setMediaPlayer()指定的并不是一个VideoView,而是一个MediaPlayerControl接口,MediaPlayerControl接口内部定义了一些播放相关的播放、暂停、停止等操作,而VideoView实现了MediaPlayerControl。

下面是MediaController+VideoView播放视频的实例。在Android 2.3中创建应用项目:VideoViewPlay。

(1)在主布局文件activity_main.xml中放置一个VideoView控件,代码如下。

978-7-111-58810-8-Chapter08-18.jpg

(2)主Activity处理文件MainActivity.java的代码如下。

978-7-111-58810-8-Chapter08-19.jpg

978-7-111-58810-8-Chapter08-20.jpg

(3)在源代码目录下新建文件Utils.java,设置网络视频的地址,代码如下。

978-7-111-58810-8-Chapter08-21.jpg

(4)在配置文件AndroidManifest.xml中增加访问权限,代码如下。

978-7-111-58810-8-Chapter08-22.jpg

(5)项目运行结果如图8-1所示。

978-7-111-58810-8-Chapter08-23.jpg

图8-1 项目运行结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈