基于Android平台的视频播放器设计班级:2012.卓越指导老师:曾晓辉、胡嵩、刘兴忠学生:徐东目的与意义Android可移植性开放性手机平板高清播放机智能电视目前市面上的播放器功能繁复占用内存大嵌入过多广告本次开发设计功能全面操作简单内存占用小解码能力强现状是由济南四叶草信息技术有限公司开发的,MoboPlayer需要在Android1.6或更高的版本上运行,MoboPlayer可以兼容更多的视频格式,并且努力的实现了任何视频格式都可以直接放在手机上播放。被称为“Android平台的万能播放器”。最初由个人制作,后来组成团队。VPlayer是一款很较为流行的视频播放器,VPlayer的特点是支持多数格式的视频,启动后直接进入视频文件夹,就可是对视频进行播放,使用方便等。RockPlayer,是由上海的ChangeTec.h公司开发,RockPlayer是一款比较高效能的视频播放器,能支持多数的视频格式,具有个性化的UI布局和设计,可以和其云端的服务相配合,用户之间可以分享视频。RealPlayer,和PC上的RealPlayer是一样的,andriod上的RealPlayer也是由RealNetworks公司研究开发的,能同时播放音乐,视频,照片,但是解码能力不是很全面。Android四大组件1.Activity组件2.Service组件3.ContentProvider(内容提供者)4.BoardcastReceiver(广播接收者)Android四大组件•1.Activity组件(1)一个Activity通常就是一个单独的屏幕(窗口)。(2)Activity之间通过Intent进行通信。(3)都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。Android四大组件•2.Service组件Service的进程模型可以由开发者自由配置的,可以把该组件运行在同一进程中,或者不同的进程中。当希望吧Service运行在和调用的组件不同的进程中的时候,则需要利用Android所提供的RPC机制,部署一套进程之间通信的策略。相同之处不同之处Service有完整的逻辑功能接收相关的指令完成相应的事件后台活动,无用户界面Activity前台活动,有用户界面Android四大组件•3.ContentProvider(内容提供者)Android平台内置了一套SQLite数据储存机制,并且包含一系列管理SQLiteDatabase的相关方法。这样设计的好处是一个ContentResolver可以访问任何的Contentprovider,统一了接口。AndroidSQLite应用程序Contentproviders(ContentResolver)其它程序Contentprovider共享数据•4.BoardcastReceiver(广播接收者)广播接收器是用于接收广播消息通知,然后做出相应的处理,对外部事件进行过滤,只对感兴趣的外部事件进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。Android四大组件系统或应用发出广播电量过低、网络改变广播接收者接收感兴趣的事件1.启动Activity2.启动Service3.NotificationManager视频播放器结构•1.启动界面LinearLayoutxmlns:android=:layout_width=match_parentandroid:layout_height=match_parentandroid:background=@drawable/app_bg3android:orientation=vertical/LinearLayout基于Android平台的视频播放器设计•2.列表界面com.xudong.videoview.adapter.ReFlashListViewandroid:id=@+id/filelistviewandroid:layout_width=match_parentandroid:layout_height=wrap_contentandroid:cacheColorHint=#00000000android:divider=#008000android:dividerHeight=1dpandroid:listSelector=#afeeee/com.xudong.videoview.adapter.ReFlashListViewlongblockSize=sf.getBlockSize();//Block的sizelongblockCount=sf.getBlockCount();//总Block数量longavailCount=sf.getAvailableBlocks();//可用的文件系统块数量•3.播放界面mVideoView=newVideoView(this);mVideoView.requestFocus();//获取焦点,只能依附于view内部再通过bundle.getInt(key)方法接收从列表传过来的视频位置信息,从而获取视频绝对文件路径,并通过VideoView.setVideoPath(path)方法把路径设置到Videoview中,然后通过mVideoView.start()方法播放获取到路径的视频文件。•4.手势控制通过在播放界面左边1/3部分上下滑动调节屏幕亮度,通过在屏幕右边1/3部分上下滑动调节音量的大小该应用程序使用vitamio提供的公共Api,以达到方便快捷的实现该功能。我们在主程序中通过如下方法直接添加控制台。mVideoView.setMediaController(newMediaController(this));//控制器•5.上下选集mVideoView.setOnCompletionListener(mCompletionListener);//监听播放完成publicvoidplayhint(intpostion){AlertDialog.Builderbuilder=newBuilder(this);builder.setTitle(提示信息);builder.setMessage(怎样操作?);builder.setPositiveButton(上一集,newOnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhich){Position--;nextplay.sendEmptyMessageDelayed(0,200);}});•6.自定义对话框当用户长按视频列表中的视频条目的时候,弹出自定义对话框并使背景变暗。如右图。视频的删除按钮则是通过file.delete()方法,删除指定的视频文件然后刷新视频列表。•7.退出程序privatevoidexit(){android.os.Process.killProcess(android.os.Process.myPid());//获取PIDSystem.exit(0);//常规java、c#的标准退出法,返回值为0代表正常退出测试•1.功能测试测试内容测试结果播放暂停通过进度条拖拽通过上一集通过下一集通过返回通过删除文件通过查看详细信息通过视图转换通过下拉刷新通过•2.主观测试:当用户点击桌面的视频播放器图标后,先出现了启动欢迎画面,然后显示该视频播放器能够播放的视频文件,便于用户快速查找想要播放的文件。用户点击列表中的文件,随即进入了播放界面,跳转过程时间短,是用户能够接受的范围。在播放的时候音视频没有不同步,没有出现花屏和卡顿的现象。亮度和音量能够快速方便的调节,各个功能都能正常实现预期的效果。总结•本次软件的开发与设计,对软件的系统框架经过了精心的设计,本次开发主要采用Eclipse开发软件和Java编程语言,首先是对开发环境的配置,包括AndroidSDK和JDK的安装,在这基础上才能对应用进行编写。•视频播放器的基本功能:视频列表的浏览、播放、暂停、上下选集等功能、运行在Android系统平台上,通过Java语言编写的程序。具有可移植性和易扩展性。操作简单,功能全面,具有良好的用户体验。谢谢