【Android论文栏目提醒】:网学会员Android论文为您提供毕业论文:基于android平台的视频播放器设计 - 毕业设计参考,解决您在毕业论文:基于android平台的视频播放器设计 - 毕业设计学习中工作中的难题,参考学习。
软件课程设计实验报告题 目:基于
android 平台的视频播放器设计院 系: 电子与信息工程系专 业: 通信工程班 级: XX XX XX辅导老师:XXX xxxx 年 xx 月 xx 日 摘 要一.
Android 平台 1.谷歌与开放手机联盟合作开发了
Android 这个联盟由包括中国移动、摩托罗拉、高通、宏达和 T-Mobile 在内的 30 多家技术和无线应用的领军企业组成。
2.
Android 是一个真正意义上的开放性移动设备综合平台。
通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系, 来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。
3.所有的
Android 应用之间是完全平等的。
4.所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的 API。
撇开这个核心引擎,
Android 的所有其他的东西都是“应用”。
5.
Android 打破了应用之间的界限,比如开发人员可以把 Web 上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验。
二.Java 开发环境 Java 技术包含了一个编程语言及一个平台。
Java 编程语言具有很多特性,如面向对象、跨平台、分布式、多线程、解释性等等。
Java 编程语言起源于 Sun 公司的一个叫“Green”的项目,目的是开发嵌入式家用电器的分布式系统,使电气更加智能化。
1996 年 1 月发布了 JDK1.1 版本,一门新语言自此走向世界。
之后, 1998 年 12 月发布了 1.2 版本,2002 年 2 月发布 1.4 版本,2004 年 10 月发布 1.5 版本(5.0),2006 年 12 月发布 1.6(6.0)版本,这是目前的最新版本。
Java1.2 版本是一个重要的版本,基于该版本,Sun 将 Java 技术分为 J2SE、J2ME、J2EE其中J2SE 为创建和运行 Java 程序提供了最基本的环境, J2ME 与 J2EE 建立在 J2SE 的基础上, J2ME为嵌入式应用(如运行在手机里的 Java 程序)提供开发与运行环境,J2EE 为分布式的企业应用提供开发与运行环境。
三.Eclipse Eclipse 的基础是富客户机平台(Rich Client Platform即 RCP)。
RCP 包括下列组件: 核心平台(Eclipse,运行插件) 标准集束框架(OSGi : Open Service Gateway initiative) 可移植构件工具包(SWT : Eclipses Standard Widget Toolkit) JFace(文件缓冲,文本处理,文本编辑器)Eclipse 采用的技术是 IBM 公司开发的 SWT, 这是一种基于 Java 的窗口组件, 类似 Java 本身提供的 AWT 和 Swing 窗口组件:不过 IBM 声称 SWT 比其他 Java 窗口组件更有效率。
Eclipse 的用户界面还使用了 GUI 中间层 JFace,从而简化了基于 SWT 的应用程序的构建。
Eclipse 的设计思想是:一切皆插件。
Eclipse 核心很小,其他所有功能都以插件的形式附加于 Eclipse 核心之上。
Eclipse 基于内核包括:图形 API(SWT/JFace) ,Java 开发环境插件JDT,插件开发环境(PDE)等。
Eclipse 的插件机制是轻型软件组件化架构。
在富客户机平台上,Eclipse 使用插件来提供所有的附加功能,例如支持 Java 以外的其他语言。
已有的分离的插件已经能够支持C/CCDT、Perl、Ruby、Python、telnet 和数据库开发。
插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。
-1-四.
Android 程序基础—
Android 应用程序的构成 1.Activity 顾名思义, Activity 就是活动。
应用程序必须至少包含一个 Activity。
Activity提供了一个虚拟的用户接口,每一个 Activity 都有一个默认的窗口可以用来显示用户界面,一般情况下,它是全屏的窗口。
例如,影音播放软件的每个用户界面就是 Activity。
2.Service Service 与 Activity 的主要区别在于,Service 是在后台活动的, 它没有用户界面。
典型的应用场景是,用户选择了一个播放列表开始播放后,离开了该用户界面Activity,如果仍然希望歌曲不会暂停, 就可以用 Service 去调用播放器, 而不是在 Activity 中调用播放器。
3.Intent 在
Android 中,每一个行为都可以抽象为一个 Intent。
可以简单地把 Intent理解为一个包含了数据的消息。
Intent 可以用于启动一个 Act-ivity 或者 Service,可以用于进程间的通信。
事实上,应用程序的启动也是通过 Intent 实现的。
4.Content providers
Android 平台内置了一套 SQLite 数据储存机制, 并包含一系列管理 SQLite Database 的相关方法。
在应用程序中,可以通过 Content prov-iders 访问数据库。
每个Content provider 都定义了一系列的方法用于访问它对应的数据库。
应用程序在新建数据库时也可以定义相应的 Con-tent provider 用于向其他应用程序共享数据。
一般情况下,应用程序不直接调用 Content provider 定义的函数, 而是通过 ContentResolver 间接调用。
这样设计的好处是一个 ContentResolver 可以访问任何的 Content provider,统一了接口。
-2- 目录摘要 1 课程设计概述 4 1.1 课程设计题目 4 1.2 课程设计要求 4 2 硬件平台搭建 4 2.1 JDK 安装 4 2.2
Android SDK 安装以及系统设置 4 2.3 Eclipse 安装以及 ADT 工具的安装 4 3 软件设计 5 3.1 软件布局设计 5 3.2 视频文件搜索功能的设计 6 3.3 播放控制功能的设计7 3.4 其他功能的设计 7 4 软件调试 8 4.1 软件在虚拟机上调试及分析 8 4.2 软件在手机上的调试及分析 9 5 总结与改进展望 10 6 附录 11 -3-1 课程设计概述 1.1 课程设计题目 一个基于
Android 平台的简单视频播放器 1.2 课程设计要求 1 能够播放.avi .mp4 等文件 2 能处理简单的异常,例如文件不存在等 3 能正常启动,退出 4 能够在手机上使用该系统2 硬件平台搭建 2.1 JDK 安装 JDK 是 Java 语言的原创者推出的原始开发环境。
采用 JDK 开发 Java 程序能够很快理解程序中各部分代码之间的关系,有利于理解 Java 面向对象的设计思想。
在 Windows 上安装 JDK非 常 简 单 , 访 问 Oracle 官 方 网 站 下 载 页 面 , 网 址 为http://www.oracle.com/technetwork/indexes/downloads/index.html也可从其他网站下载。
下载完成后,双击运行 JDK 安装程序并根据提示设定环境变量。
2.2
Android SDK 安装以及系统设置 下载好 SDK 包后,将 zip 文件解压缩至合适的地方。
在下文中,默认 SDK 安装目录为SDK_ROOT 。
Linux 下,打开文件/.bash_profile 或者/.bashrc,找到设定 PATH 环境变量的一行,将 SDK_ROOT/tools 的完整路径加入其中。
如果没有找到设定 PATH 变量的行,可以自己添 加一行: export PATHPATH:ltSDK_ROOT/tools 的完全路径gt Mac 下,在 home 目录中找到文件.bash_profile,和 Linux 的一样处理。
如果还没有在机器 上设定这个文件,可以创建一个.bash_profile 文件。
Windows 下,右键点击【我的电脑】 ,选择【属性】 ,在【高级】页中,点击【环境变量】 按键,在弹出的对话框中双击“系统变量”中的变量“Path”,将SDK/tools 的完全路径加入其 中。
通过将SDK/tools 加入系统路径,在运行 adb 和其它一些命令行工具时就不需要键入完全路径名了。
需要注意到是,当升级了 SDK 后, 如果安装路径有变动的话, 不要忘记了更新 PATH变量的设置,将其指向变动后的路径。
配置 SDK 有两种方法:第一种,通过 SDK 下载器自动下载和配置。
适合网络好,下载速度快的情况;第二种,借助工具下载 SDK 文件,手工配置。
适合网络不是很好,下载速度慢的情况下。
2.3Eclipse 安装以及 ADT 工具的安装 下载 Eclipse 安装包后,无需安装,只需解压缩,点击“eclipse.exe”文件即可运行。
Android 为 Eclipse 定制了一个插件,即
Android Develpoment ToolsADT,目的是为用户提供一个强大的综合环境用于开发
Android 应用程序。
ADT 扩展了 Eclipse 的功能,可以让用户快速建立
Android 项目,创建应用程序界面,在基于
Android 框架 API 的基础上添加组件,以及用 SDK 工具集调试应用程序,甚至导出签名(或未签名)的 APKs 以便发行应用程序。
安 -4-装 ADT:启动 Eclipse,选择 HelpgtInstall New Software在出现的对话框里,点击 Add 按钮,在对话框的 name 一栏输入quotADTquot然后点击 Archive...,浏览和选择已经下载的 ADT 插件压缩文件,点击 OK。
返回可用软件的视图,你会看到这个插件,然后选择 Developmer Tools,点击Next,最后重启 Eclipse。
硬件平台搭建好后,便可以开始创建项目了。
3 软件设计 3.1 软件布局设计 此为一个简单的视频播放器,设计的软件需要支持快进、快退、暂停、继续和进度拖曳等功能。
视频播放软件工程文件主要包括 src 文件夹(Java 源码) 、res 文件夹(资源文件)和AndroidMainfest.xml(程序清单) 。
软件主要由 Activities 组成,每个 Activity 对应一个模块。
不同的 Activity 通过 Intent 进行通信和相互调用。
软件的布局(main.xml)如下:ltxmlversionquot1.0quotencodingquotutf‐8quotgtltLinearLayoutxmlns:androidquothttp://schemas.
android.com/apk/res/androidquotandroid:orientationquotverticalquotandroid:layout_widthquotfill_parentquotandroid:layout_heightquotfill_parentquotgtltTextViewandroid:layout_widthquotfill_parentquotandroid:layout_heightquotwrap_contentquotandroid:textquotstring/helloquot/gtltTextViewandroid:layout_widthquotfill_parentquotandroid:layout_heightquotwrap_contentquotandroid:textquot键入文件名称quotandroid:textSizequot20dpquot/gtltEditText
android:idquotid/edittextquot
android:layout_widthquotfill_parentquotandroid:layout_heightquotwrap_contentquot/gtltButton
android:idquotid/starttoplayquot
android:layout_widthquotfill_parentquotandroid:layout_heightquotwrap_contentquotandroid:textquotOpenfilequotandroid:textSizequot20dpquot/gtltVideoView -5-
android:idquotid/videoquot
android:layout_widthquotfill_parentquotandroid:layout_heightquotfill_parentquot/gtltTextViewandroid:layout_widthquotfill_parentquotandroid:layout_heightquotwrap_contentquotandroid:textquot点击界面获取播放控制键quotandroid:textSizequot20dpquot/gtltButton
android:idquotid/quitquot
android:layout_widthquotfill_parentquotandroid:layout_heightquotwrap_contentquotandroid:textquotQuitquotandroid:textSizequot20dpquot/gtlt/LinearLayoutgt 布局主体为 LinearLayout,由多个 TextView、Button 等类组成。
3.2 视频文件搜索功能的设计 此程序需要输入文件的绝对路径,例如quot/sdcard/video.mp4quot;输入文件名字之后,点击 openfile。
部分程序如下:ifvideo.exists videoView.setVideoPathvideo.getAbsolutePath//文件绝对路径 videoView.setMediaControllermediaController// 设 置 videoView 与mediaControler的关联 mediaController.setMediaPlayervideoView videoView.requestFocus -6- 3.3 播放控制功能的设计 在打开播放文件之后,点击画面的空白部分,这时会弹出视频播放控制按钮,分别是后退、播放/暂停和前进,下面显示视频播放时间轴,可以进行拖曳。
点击 qiut 即可退出界面 3.4 其他功能的设计 此程序还能处理简单的异常,输入文件后,若文件不存在,会提醒你“很抱歉,您输入的 -7-文件不存在,请重新输入”,若文件格式不符合,也会有相应的提示。
部分程序如下: ifvideo.exists...... else Toast.makeTextVideoPlayerActivity.thisquot很抱歉,您输入的文件不存在,请重新输入quot Toast.LENGTH_LONG.show 4 软件调试 4.1 软件在虚拟机上调试及分析 此次调试采用的虚拟机是
Android 2.1,并且分别导入 avimp4mp3 等文件进行调试。
一开始系统点击视频播放器的图标进入视频播放器的界面, 执行 VideoPlayerActivity.java 就可以执行视频播放器的操作了:播放,暂停,快进,快退,退出。
在调试过程中,遇到了不少问题,大致如下: 1)Unable to resolve target
android-2 原因:将一个低版本的
Android 项目导入到 workspace 里通常会在第一时间出现这样的错 误提示。
解决办法:将 default.properties 属性文件中的 Project target 修改为
android-7 即可,
android 2.1 对应的 API 为 7. 2)
Android requires compiler compliance level 5.0 or 6.0. Found 1.7 instead.Please use
Android Tools gt Fix Project Properties. 解决办法:点击菜单栏中的 projectgtpropertiesgtJava CompilergtEnable project specific settings,将 Compiler compliance level 改为 1.6。
3)Could not find videoPlayer.apk 解决办法:点击菜单栏中的 projectgtpropertiesgtJava Build Path,选择 Libraries,点 -8-下面的
Android 2.1,然后点右边按钮 Remove然后 apply然后 ok。
再选择 projectgtandroidtoolsgtFix project properties运行就可以了。
还遇到了许多小小的错误,如向 sdcard 中导入文件不能使用中文路径,在此不一一列出。
在解决这些问题过程中,更加熟练地掌握了虚拟机的调试方法,最终能成功地播放文件。
在模拟器上大体不错,界面很酷,并且很整齐,功能都可以实现。
下面是在模拟器上的实现: 4.2 软件在手机上的调试及分析 播放器的安装:将程序安装包下载到手机上,在手机中找到 videoplay.apk 的安装文件,打开文件按指示安装 videoplay 播放器,并在手机的 sd 卡中放入相应的音频、视频文件。
文件的播放: 1)安装成功后,直接打开视频播放器,找到音频、视频文件所在地方,按播放器界面提示,输入要播放的文件的绝对路径,打开文件使之播放,在手机上视频播放更为流畅。
流程图如下所示:文件路径,打开播放器,在第一个输入框中输入要播放的文件的打开路径,点击下方 Open file -9-即可打开文件,手机屏幕上提示显示“点击屏幕获取播放控制键”,按指示点击,跳出控制键,点击播放键,即可听音乐或放视频。
控制小界面上有播放/暂停、上一曲/快退、下一曲/快进控制键,以及播放进度显示条,我们亦可点击进度条,使播放文件迅速跳转到我们需要的地方。
当文件播放完时,屏幕显示跳回到流程图中第三个画面。
而当打开的路径不正确时,屏幕上也会给出错误提示,如第六个图所示。
如若要退出程序,则点击下方的 Quit 键,即可退出播放器。
2)打开 sd 卡内文件夹,找到音频、视频文件所在地,直接点击文件,文件即可在播放器中播出。
5 总结与改进展望 在此次课程设计中, 不仅了解到了
android 的有关知识,而且学习了 Java 语言以及 eclipse等硬件环境。
有几点需要特别注意: (1)要明确课程设计的要求,想好系统应该包含哪些功能模块。
否则,在软件设计的后期,再想添加新的功能就需要花费大量的时间。
(2)要对
android 系统有一定的了解。
在软件设计过程中,大量的用到了
android 系统的四大组件:Activity(提供可视化的界面) 、Service(运行在后台的服务程序) 、BroadcastReceiver(广播事件处理机制) 、Content Provider(使应用程序相互访问数据) 。
只有对这些组件熟练掌握后,才能够真正设计出稳健搞笑的多媒体播放器。
(3)要对 Java 语言熟练掌握。
Android 软件开发都是用 Java 语言写的,而 Java 又是由类组成的。
而 Java 语言本身又含有众多机制,只有深刻理解这些机制后,才能轻松地实现自己想要的功能。
(4)要对界面设计有一定的了解。
Android 所有的布局都放在了 res/layout 中,而所有的菜单选项都放在了 res/menu 中。
合理的布局对人性化的界面也是至关重要的。
(5)要具备快速上网查资料的能力。
面对从没接触过的知识,要有信心才是最重要的。
另外,网上的很多现成的资料都可借鉴、学习。
在熟练理解了别人的应用程序的基础上,再做二次开发。
还需要改进的地方:1.播放器的播放界面设置较为简单, 不够精美和方便,看过班上很多同学设计的播放器有些甚是完整,完全可以在手机上作为专门的媒体播放器使用,可以向他们学习,加以改进,使我们的作品也更完善;2.只支持.avi.mp3.mp4 格式的,还应支持.flv 等其他格式的; - 10 -3.只能播放一个视频,以后还要扩展成能播放多个视频的;4.播放音频文件时不能显示播放歌曲的歌词, 这是一个较大的缺陷,在程序上可以进行补充和调整,对于下载的模拟器中一些功能的调用更全面,可以将之改进;5.播放音频文件时不能实现播放模式的选择。
个人收获:1.现学现做的能力。
从图书馆借一些参考光盘,对某项内容的原理大致了解后,直接运行它的源代码,先观察效果,给大脑直接的印象,然后再去理解程序。
2.团队协作意识。
身为团队的一员,必须与自己的队友合作。
尤其是刚开始做时,要将任务分配明确,还要定期监督各自的进度。
3.上网查资料的能力。
网络是一个十分强大的信息工具。
网上有大量的
Android 参考资料以及很多著名的
Android 论坛,这上面为我提供了大量的有用信息。
尤其是碰到错误时,上网搜一搜,能很快找到解决办法。
4.英语阅读能力。
因为很多资料都是起源于国外,而很多参考书也是英文的。
此外,
Android 官网以及著名的
Android 论坛都是英文版,此外,具备一定的英语阅读能力也是非常重要的。
5.与同学间的交流探讨。
此次我们团队为三个人,大家经常交流,有助于开拓自己的思维,取长补短,共同解决碰到的问题,这正是一个相互学习的过程。
6 附录 VideoPlayerActivity.java: package Ld.videoPlayer import java.io.File import
android.app.Activity import
android.graphics.PixelFormat import
android.os.Bundle import
android.view.View import
android.view.View.OnClickListener import
android.widget.Button import
android.widget.EditText import
android.widget.MediaController import
android.widget.Toast import
android.widget.VideoView public class VideoPlayerActivity extends Activity / Called when the activity is first created. / VideoView videoView private String fielname MediaController mediaController EditText editText Button openButton Button qiutButton Override public void onCreateBundle savedInstanceState - 11 - super.onCreatesavedInstanceState //public Window getWindow 返回当前 activity 的 window //void
android.view.Window.setFormatint format //public void setFormat int format 设置窗口的像素格式 //PixelFormat.TRANSLUCENT 透明.