android实验报告第八组视频播放器.docx
- 文档编号:23694151
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:20
- 大小:107.02KB
android实验报告第八组视频播放器.docx
《android实验报告第八组视频播放器.docx》由会员分享,可在线阅读,更多相关《android实验报告第八组视频播放器.docx(20页珍藏版)》请在冰豆网上搜索。
android实验报告第八组视频播放器
科信学院
单片机系统设计项目(三级项目)
设计说明书
(2012/2013学年第二学期)
题目:
视频播放器
专业班级:
通信工程10级2班
学生姓名:
尹艳迪朱江董宣利
学号:
868
指导教师:
马小进、侯华、任丹萍、刘心
设计周数:
1周
设计成绩:
2013年7月5日
1课程设计概述
1.1课程设计题目
一个基于Android平台的简单视频播放器。
1.2课程设计要求
(1)能够播放3gp,.mp4等文件;
(2)能处理简单的异常,例如文件不存在等;
(3)能正常启动,退出;
(4)能够在手机上使用该系统;
2硬件平台搭建
2.1JDK安装
JDK是Java语言的原创者推出的原始开发环境。
采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。
在Windows上安装JDK非常简单,访问Oracle官方网站下载页面,网址为/indexes/downloads/index.html,也可从其他网站下载。
下载完成后,双击运行JDK安装程序并根据提示设定环境变量。
2.2AndroidSDK安装以及系统设置
下载好SDK包后,将zip文件解压缩至合适的地方。
在下文中,默认SDK安装目录为$SDK_ROOT。
(1)Linux下,打开文件~/.bash_profile或者~/.bashrc,找到设定PATH环境变量的一行,将$SDK_ROOT/tools的完整路径加入其中。
如果没有找到设定PATH变量的行,可以自己添加一行:
exportPATH=${PATH}:
<$SDK_ROOT/tools的完全路径>
(2)Mac下,在home目录中找到文件.bash_profile,和Linux的一样处理。
如果还没有在机器上设定这个文件,可以创建一个.bash_profile文件。
(3)Windows下,右键点击【我的电脑】,选择【属性】,在【高级】页中,点击【环境变量】按键,在弹出的对话框中双击“系统变量”中的变量“Path”,将$SDK/tools的完全路径加入其中。
通过将$SDK/tools加入系统路径,在运行adb和其它一些命令行工具时就不需要键入完全路径名了。
需要注意到是,当升级了SDK后,如果安装路径有变动的话,不要忘记了更新PATH变量的设置,将其指向变动后的路径。
配置SDK有两种方法:
第一种,通过SDK下载器自动下载和配置。
适合网络好,下载速度快的情况;第二种,借助工具下载SDK文件,手工配置。
适合网络不是很好,下载速度慢的情况下。
2.3Eclipse安装以及ADT工具的安装
下载Eclipse安装包后,无需安装,只需解压缩,点击“eclipse.exe”文件即可运行。
Android为Eclipse定制了一个插件,即AndroidDevelpomentTools(ADT),目的是为用户提供一个强大的综合环境用于开发Android应用程序。
ADT扩展了Eclipse的功能,可以让用户快速建立Android项目,创建应用程序界面,在基于Android框架API的基础上添加组件,以及用SDK工具集调试应用程序,甚至导出签名(或未签名)的APKs以便发行应用程序。
安装ADT:
启动Eclipse,选择Help>InstallNewSoftware,在出现的对话框里,点击Add按钮,在对话框的name一栏输入"ADT",然后点击Archive...,浏览和选择已经下载的ADT插件压缩文件,点击OK。
返回可用软件的视图,你会看到这个插件,然后选DevelopmerTools,点击Next,最后重启Eclipse。
硬件平台搭建好后,便可以开始创建项目了。
3软件设计
3.1 软件产品名称
一个基于Android平台的视频播放器。
3.2 软件总体功能
(1) 能够播放.3gp, .mp4等文件
(2) 能处理简单的异常,例如文件不存在等
(3) 能正常启动,退出
(4) 能够在手机上使用该系统
3.3 软件开发环境
①软件环境:
eclipse 3.2 ,Android ADT
②硬件环境:
lenovoz470
③操作系统:
Win7 旗舰版
3.4 概要设计
经过反复思考和查阅资料,拟确定了以下程序流程图1:
图1程序流程图
3.5软件布局设计
此为一个简单的视频播放器,设计的软件需要支持快进、快退、暂停、继续和进度拖曳等功能。
视频播放软件工程文件主要包括src文件夹(Java源码)、res文件夹(资源文件)和AndroidMainfest.xml(程序清单)。
软件主要由Activities组成,每个Activity对应一个模块。
不同的Activity通过Intent进行通信和相互调用。
软件的布局(play.xml)如下:
xmlversion="1.0"encoding="utf-8"?
>
android="/res/android" android: orientation="horizontal" android: layout_width="fill_parent" android: layout_height="wrap_content" android: layout_marginTop="2dip"> orientation="vertical" android: layout_width="fill_parent" android: layout_height="wrap_content" android: layout_weight="1"> id="@+id/video" android: layout_width="fill_parent" android: layout_height="wrap_content" android: layout_gravity="center_vertical"/> android: id="@+id/time" android: layout_width="wrap_content" android: layout_height="wrap_content" android: paddingRight="5dip" android: layout_gravity="center"/> 3.6视频文件搜索功能的设计 此程序需要输入文件的绝对路径,例如"/sdcard/video.mp4";输入文件名字之后,点击openfile。 部分程序如下: listview=newListView(this);//搜索手机中的视频文件 Cursorc=this.getContentResolver() .query(, newString[]{, null,null,null); if(c==null||c.getCount()==0)//如果没有搜索到视频,显示存储列表为空... { builder=newAlertDialog.Builder(this); builder.setMessage("存储列表为空...").setPositiveButton("确定",null); ad=builder.create(); ad.show(); } 3.7播放控制功能的设计 在打开播放文件之后,点击画面的空白部分,这时会弹出视频播放控制按钮,分别是后退、播放/暂停和前进,下面显示视频播放时间轴,可以进行拖曳 4播放软件在手机上的演示 打开视频播放器软件在内存卡上自动扫描出来的视频列表如图2 图2视频列表 选中一个视频后出现了一个播放界面,上面有四个按键,开始、暂停、返回、停止。 还有音量调节按钮以及视频播放进度条可以通过进度条对视频进行快进和后退的操作其界面如图3所示 图3操作界面 按下播放键所选中的视频就会播放了时播放的界面如图4所示 图4播放时的界面 5.总结与改进展望 在此次课程设计中,不仅了解到了android的有关知识,而且学习了Java语言以及eclipse等硬件环境。 有几点需要特别注意: (1)要明确课程设计的要求,想好系统应该包含哪些功能模块。 否则,在软件设计的后期,再想添加新的功能就需要花费大量的时间。 (2)要对android系统有一定的了解。 在软件设计过程中,大量的用到了android系统的四大组件: Activity(提供可视化的界面)、Service(运行在后台的服务程序)、BroadcastReceiver(广播事件处理机制)、ContentProvider(使应用程序相互访问数据)。 只有对这些组件熟练掌握后,才能够真正设计出稳健搞笑的多媒体播放器。 (3)要对Java语言熟练掌握。 Android软件开发都是用Java语言写的,而Java又是由类组成的。 而Java语言本身又含有众多机制,只有深刻理解这些机制后,才能轻松地实现自己想要的功能。 (4)要对界面设计有一定的了解。 Android所有的布局都放在了res/layout中,而所有的菜单选项都放在了res/menu中。 合理的布局对人性化的界面也是至关重要的。 (5)要具备快速上网查资料的能力。 面对从没接触过的知识,要有信心才是最重要的。 另外,网上的很多现成的资料都可借鉴、学习。 在熟练理解了别人的应用程序的基础上,再做二次开发。 6.个人收获: 1.现学现做的能力。 从图书馆借一些参考光盘,对某项内容的原理大致了解后,直接运行它的源代码,先观察效果,给大脑直接的印象,然后再去理解程序。 2.团队协作意识。 身为团队的一员,必须与自己的队友合作。 尤其是刚开始做时,要将任务分配明确,还要定期监督各自的进度。 3.上网查资料的能力。 网络是一个十分强大的信息工具。 网上有大量的Android参考资料以及很多著名的Android论坛,这上面为我提供了大量的有用信息。 尤其是碰到错误时,上网搜一搜,能很快找到解决办法。 4.英语阅读能力。 因为很多资料都是起源于国外,而很多参考书也是英文的。 此外,Android官网以及著名的Android论坛都是英文版,此外,具备一定的英语阅读能力也是非常重要的。 5.与同学间的交流探讨。 此次我们团队为两个人,我们经常交流,有助于开拓自己的思维,取长补短,共同解决碰到的问题,这正是一个相互学习的过程。 7.参考文献 [1]李艳丽.Android事件处理过程剖析[N]长春理工大学学报2009 [2]汪源,刘芳.Android的进程与单线程模型浅析[J].仪器仪表用户2011 [3]马越.Android的架构与应用[D]中国地质大学(北京),2008. [4]叶炳发.Android操作系统移植及关键技术研究[D]暨南大学,2010. [5]岳传真.Android系统移植和应用程序开发[D]复旦大学,2010. [6]陈勋.基于android平台的资源管理器设计[D]电子科技大学,2011. 附录 package; import; import; import; import; import; import; import; import; import; import; import; import; import; import; import; import; publicclassPlayActivityextendsActivity { ; privateAudioManagermAudioManager=null; privateTextViewplaytime=null; privateTextViewdurationTime=null; privateTextViewsound; privateSeekBarseekbar=null; privateSeekBarsoundBar=null; privateSurfaceViewsurfaceView; privateFilevideofile; privateMediaPlayermediaPlayer; privateHandlerhandler=null; privateintposition; privateintcurrentPosition; @Override publicvoidonCreate(BundlesavedInstanceState)//创建并打开一个现有的窗体,并与play。 xml进行关联 { super.onCreate(savedInstanceState); setContentView(; mediaPlayer=newMediaPlayer(); playtime=(TextView)findViewById(; durationTime=(TextView)findViewById(; sound=(TextView)findViewById(; surfaceView=(SurfaceView)this.findViewById(; surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); surfaceView.getHolder().setFixedSize(320,240); seekbar=(SeekBar)findViewById(; ButtonClickListenerlistener=newButtonClickListener();//设置按钮监听 ImageButtonplaybutton=(ImageButton)this.findViewById(; playbutton.setAlpha(00000000);//设置透明度? ? ? ImageButtonpausebutton=(ImageButton)this.findViewById(; ImageButtonresetbutton=(ImageButton)this.findViewById(; ImageButtonstopbutton=(ImageButton)this.findViewById(; playbutton.setOnClickListener(listener); pausebutton.setOnClickListener(listener); resetbutton.setOnClickListener(listener); stopbutton.setOnClickListener(listener); seekbar.setOnSeekBarChangeListener(newOnSeekBarChangeListener()//设置进度条监听 { @Override publicvoidonStopTrackingTouch(SeekBarseekBar) { } @Override publicvoidonStartTrackingTouch(SeekBarseekBar) { } @Override publicvoidonProgressChanged(SeekBarseekBar,intprogress,booleanfromUser) { if(fromUser) mediaPlayer.seekTo(progress); } }); soundBar=(SeekBar)findViewById(; soundBar.setOnSeekBarChangeListener(newOnSeekBarChangeListener()//设置音量控制进度条监听 { @Override publicvoidonStopTrackingTouch(SeekBarseekBar) { //TODOAuto-generatedmethodstub } @Override publicvoidonStartTrackingTouch(SeekBarseekBar) { //TODOAuto-generatedmethodstub } @Override publicvoidonProgressChanged(SeekBarseekBar,intprogress,booleanfromUser) { //TODOAuto-generatedmethodstub if(fromUser) { intScurrentPosition=soundBar.getProgress(); mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,ScurrentPosition,0); } } }); } @Override protectedvoidonRestoreInstanceState(BundlesavedInstanceState) {//导入视频路径,其方法与listActivity。 java相关联 position=savedInstanceState.getInt("position"); Stringpath=savedInstanceState.getString("path"); if(path! =null&&! "".equals(path)) { videofile=newFile(path); } super.onRestoreInstanceState(savedInstanceState); } @Override protectedvoidonSaveInstanceState(BundleoutState) { outState.putInt("position",position); if(videofile! =null) outState.putString("path",videofile.getAbsolutePath()); super.onSaveInstanceState(outState); } privatefinalclassButtonClickListenerimplementsView.OnClickListener { privatebooleanpause; publicvoidonClick(Viewv) { switch(v.getId()) { case Stringfilename=; videofile=newFile(filename); play(); break; case if(mediaPlayer.isPlaying()) { mediaPlayer.pause(); pause=true; } else { if(pause) { mediaPlayer.start(); pause=false; } } break; case if(mediaPlayer.isPlaying()) { mediaPlayer.seekTo(0); } Else { play(); } break; case if(mediaPlayer.isPlaying()) { mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer=null; } break; default: break; } } } privatevoidplay()//定义一个播放方法,用于播放视频 { try { mediaPlayer.reset(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setDisplay(surfaceView.getHolder()); mediaPlayer.setDataSource(; setup(); mediaPlayer.start(); } catch(Exceptione) { "playiswrong"); } } publicStringtoTime(inttime)//时间 { time/=1000; intminute=time/60; intsecond=time%60; returnString.format("%02d: %02d",minute,second); } publicStringtoFotmat(intnum) { returnString.format("%02d",num); } privatevoidsetup()//进度条处理 { init(); try { mediaPlayer.prepare(); mediaPlayer.setOnPrepa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 实验 报告 第八 视频 播放