




免费预览已结束,剩余58页可下载查看
毕业论文(设计)-基于Android系统的MP5播放器的设计与实现29874.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题题(中、英文)(中、英文)目目 基于 android 系统的 mp5 播放器的设计与实现 基于 android 系统的 mp5 播放器的设计与实现 design and implementation of mp5 player based on android 作者姓名作者姓名 张永久 张永久 郑有才 副教授 郑有才 副教授 软件工程 提交论文日期 软件工程 提交论文日期 二一二年六月 二一二年六月 杨睿琦 高级工程师 杨睿琦 高级工程师 代号代号 分 类 号分 类 号 学号学号 密级密级 10701 10701 tp311.5 公开 公开 10092003 10092003 u d c 编号编号 学校指导教师姓名职称学校指导教师姓名职称 工程领域工程领域 企业指导教师姓名职称企业指导教师姓名职称 摘 要 基于 android 系统的 mp5 播放器设计的目的是让用户更方便的听音乐、看电 影、阅读电子书、网上冲浪等等。android 智能手机系统被 google 推出之后,由 于其具备强大的功能并且便于操作,被越来越多的用户所使用。智能手机系统在 逐步占领着市场。传统的 mp5 播放器的功能较为单一,已逐渐不能满足广大用户 的需求。 这款基于 android 系统的 mp5 播放器是在 android 的基础上实现了 mp5 播放 器的功能,既满足了用户对 android 智能手机系统的需要又具备 mp5 播放器的特 点。本文详细介绍了该系统视频、音频、电子书和网络等功能的实现,ui 的设计 以及其如何友好的与用户交互。 本系统主要是在 android launcher 基础上进行设计 和实现的, 使用 eclipse、 jdk 和 sdk 做为开发工具在 android 应用层上进行开发, 采用android标准的应用的开发模式, 使用了sqlite数据库和webkit浏览器引擎。 开发调试环节使用了 dalvik 虚拟机。 开发成果为预装在特定 android 设备中的 apk 文件。该系统将视频、音频、 电子书和网络整合在一起,方便用户的使用。这款基于 android 系统的 mp5 播放 器的功能经过测试已逐步完善, 同时该 mp5 播放器做为一款新型的 mp5 播放器被 推出到市场上。 关键词:android 应用层 mp5 播放器 abstract the designed purpose of mp5 player based on android system is to bring users more convenient to enjoying music, watching movies, reading books, surfing in the internet.with powerful features and ease of operation, more and more users are using. android after google released it. the smart phone system is in the gradual occupation of the market. with single features, traditional mp5 player has been increasingly unable to meet the needs of customers. this mp5 player based on android system implemented functions of mp5 player on the basis of the android with the characteristics of mp5 player and the satisfaction of users need to android system.this paper describes the implementation of the system such as video, audio, e-books, and network functions, the ui design, and how to interact with user friendly. this system is mainly designed on the base of android launcher.it was developmented in application layer with eclipse, jdk and sdk as a development tool, the android application development model, using sqlite database, the webkit browser engine, and the dalvik virtual machine. the development result is the apk pre-installed in particular android device. the system made an intergration of video, audio, e-books, and network integration, which bring users more convinient. the functions of the mp5 player based on the android has been tested, and gradually improved. now this mp5 player is introduced to the market as a new kind of mp5 player. keywords: android application layer mp5 player 目目 录录 第一章 引言 . 1 1.1 课题提出背景 . 1 1.2 国内外同类课题研究现状 . 1 1.3 项目研究目标 1 1.4 论文章节安排 2 第二章 相关技术 . 3 2.1 开发平台介绍 3 2.1.1 android 平台简介 3 2.1.2 android 平台特点 3 2.1.3 android 系统组件 . 5 2.2 主要技术 . 6 2.2.1 ndk 简介 6 2.2.2 系统安全机制简介 . 7 2.2.3 系统上层开发简介 . 8 2.2.4 系统中间层开发简介 . 9 2.2.5 系统内核简介 . 9 2.3 开发工具 . 10 2.4 本章小结 . 11 第三章 系统需求分析 . 13 3.1 系统总体需求分析 . 13 3.2 子模块需求分析 . 16 3.2.1 桌面模块的需求分析 . 16 3.2.2 视频模块需求分析 . 19 3.2.3 音乐模块需求分析 . 21 3.2.4 电子书模块需求分析 . 22 3.2.5 网络模块需求分析 . 24 3.3 本章小结 24 第四章 总体设计 . 25 4.1 系统架构设计 . 25 4.2 系统主要功能设计 26 4.3 子模块总体设计 28 4.3.1 视频模块总体设计 28 4.3.2 音乐模块总体设计 29 4.3.3 网络模块总体设计 29 4.3.4 电子书模块总体设计 30 4.4 数据库设计 31 4.6 本章小结 32 第五章 系统详细设计与实现 33 5.1 launcher 详细设计与实现 . 33 5.2 视频模块详细设计与实现 35 5.3 音乐模块详细设计与实现 38 5.4 电子书模块详细设计与实现 39 5.5 网络模块详细设计与实现 40 5.6 本章小结 43 第六章 系统测试 45 6.1 测试环境 45 6.2 测试方法 45 6.3 功能测试 46 6.4 性能测试 50 6.5 本章小结 51 第七章 结束语 53 致 谢 55 参考文献 57 第一章 引言 1 第一章 引言 1.1 课题提出背景 android 智能手机系统被 google 推出之后,由于其具备强大的功能并且便于 操作,被越来越多的用户所使用。智能手机系统在逐步占领着市场。传统的 mp5 播放器的功能较为单一,已逐渐不能满足广大用户的需求。这款基于 android 系统 的 mp5 播放器是在 android 的基础上实现了 mp5 播放器的主要功能, 既满足了用 户对 android 智能手机系统的需要又具备 mp5 播放器的功能, 是新一代的 mp5 播 放器。 1.2 国内外同类课题研究现状 android 是基于 linux 内核的操作系统, 是 google 公司在 2007 年 11 月 5 日公 布的手机操作系统5。 采用 android 系统主要手机厂商包括宏达电子(htc)、三星(samsung)、 摩托罗拉(motorola)、lg、sony ericsson、魅族 m9、联想(lenovo)、 中兴通讯(zte)、华为等,使之跃居全球最受欢迎的智能手机平台,android 系 统不但应用于智能手机,也在平板电脑市场急速扩张6。 近期陆续出现了基于 android 系统的 mp4、mp5 播放器。 昂达 vx580r 是一款使用 android 系统的 mp4 播放器。昂达 vx580r 采用了 和 mac os 酷似的 ui 界面,不仅界面炫丽,而且可玩性相当高,用户可以随自己 需要安装软件,并在 ui 界面添加图标,通过滑动可以切换至下一屏,若下一屏没 有图标,则系统会默认退回上一屏,十分人性化。 不过有点不足的是,昂达 vx580r 开机速度较慢,大约需要 20 秒,不过这也 是 android 系统的通病。 1.3 项目研究目标 在该系统的开发过程中本人将要完成的工作有:对 mp5 主界面布局的设计, 使其美观,大方;加入各种特效,如点击效果,拖动效果,以及界面的各种动画; 对用户的点击,拖动,长按等事件做出响应,并且调用相应的方法,实现相关的 2 基于 android 系统的 mp5 播放器的设计与实现 功能;不断完善该系统,解决出现的各种问题。 预计该 mp5 播放器将会实现的主要功能有:播放音频,播放视频,电子书, 在线视频,在线阅读,网络电视。该 mp5 播放器可以通过 wifi 连接网络,还可 以安装各种 android 系统支持的软件。在细节上更加人性化,尽可能的方便用户使 用。该 mp5 播放器将会给用户的带来更多的方便和乐趣。 1.4 论文章节安排 本文分为七章,下面为每一章的主要内容。 第一章,引言。介绍了课题提出的背景,国内外同类课题研究的现状和本项 目研究的目标。 第二章,相关技术。本章对 android 开发平台进行了详细的介绍,同时对本项 目使用的主要技术加以介绍,最后对介绍了使用的开发工具。 第三章,系统需求分析。明确了该系统的功能,为之后设计和实现做了准备。 本章首先对系统子模块的某些相同的功能加以描述,之后再详细介绍各个子模块 的功能。 第四章,总体设计。此章是在第三章需求分析的基础上对系统的总体架构进 行和数据库进行设计。 第五章,系统详细设计和实现。本章详细介绍了本系统各个模块的功能是如 何实现的。对其中的核心算法和函数加以介绍。 第六章,测试。本章对所采用的测试方法进行了介绍,并在测试之后给出了 测试结果。 第七章,结束语。本章对在项目开发过程中本人所做的工作加以总结,并对 未来提出了展望。 第二章 相关技术 3 第二章 相关技术 2.1 开发平台介绍 2.1.1 android 平台简介 android 是 google 公司最新推出的一个手机平台,它是真正意义上的开放性 的移动设备综合平台7。它主要包括操作系统、用户界面和应用程序以及移动电话 工作所需要的全部软件,并且不存在任何如以往阻碍移动产业创新的专有权障碍 8。 android 是由 linux 内核与 java 构成的。 这种的架构和工作原理决定了 android 是目前最具可移植性的手机操作系统之一9。 android 是开源系统,能够有效得降低软件的成本,以降低手机整体的价格, 最终让每个用户都能够自由的获取信息10。android 提供了一个从操作系统 (operating system)到应用程序(application)的完整软件栈,同时又允许人们定制 个性化,从而形成自己的竞争优势,这对于手机制造商来说,具有强大的吸引力。 开源软件所带来的另一个好处就是允许厂商自主解决问题。google 和开放手机联 盟合作开发了 android,该联盟由包括 t-mobile、中国移动、高通、摩托罗拉和 htc 在内的 30 多家无线应用技术的领军企业所组成11。 通过与开发商、设备制造商、运营商和其他有关各方结成相对深层次的合作 伙伴关系,用建立标准化、开放式移动电话软件平台的方式,在移动产业之内形 成一个开放式的生态系统12。 android 平台的研发队伍阵容非常强大, 包括 google、 htc、lg、高通、摩托罗拉、三星、t-mobile 以及中国移动在内的三十多家企业 都将基于此平台开发手机和平板电脑的新型业务,各种应用之间的互联性和通用 性将在最大程度上得到保持13。该“开放手机联盟”表示,android 平台可以促进移 动设备创新,带给用户最优越的移动服务的体验,于此同时,开发商们也将得到 一个新的开放级别,并且更方便的进行协同合作,从而保障了新型移动设备的研 发速度14。允许厂商自主解决问题是开源软的另一个好处。 2.1.2 android 平台特点 android 平台的特点主要表现在如下几个方面。 应用框架:用于开发可重用和可替代的组件。 dalvik 虚拟机:android 所采用的 java 虚拟机不是 sun 公司的 jme 引擎,而 是代号为 dalvik 的自主开发的虚拟机技术,在保证了 api 方面的兼容性的同时, 4 基于 android 系统的 mp5 播放器的设计与实现 dalvik 针对移动手机进行了大幅的优化,占用资源更少,运行效率更高15。 集成的浏览器:其浏览器基于开源的 webkit 引擎。该引擎是一个开源浏览器 网页排版引擎,目前所使用这种引擎的浏览器主要有:safari、epiphany、midori 等。 优化的图形:android 具有非常强大的自定义二维图形库,具备 3d 图形功能 (使用硬件加速),该功能是基于 opengl es 1.0 标准。 sqlite:sqlite 是一种结构化的数据存储工具。sqlite 是一款经典的轻型数 据库,它是为嵌入式而设计的,而且目前已经被用在很多嵌入式产品中,它占用 的资源相当低,在嵌入式设备中,大概只需要几百 k 的内存就足够了。它能够支 持 unixlinuxwindows 等等主流操作系统,同时也能够跟很多程序语言结合, 比如 java、php 等,还有 odbc 接口,同样相对 mysql、postgresql 来讲,sqlite 的处理速度比它们都快。sqlite 虽然很小巧,但是它支持的 sql 语句不会逊色于 其它开源的数据库16。同时还支持事务处理功能等。 提供媒体功能: 支持各种通用音视频和静态图像格式(如: gif、 mpeg4、 png、 mp3、aac、amr、jpg) 17。 gsm 技术:global system for mobile communications,即全球移动通讯系统, 俗称“全球通”, 是第二代移动通信技术,该移动通信技术标准起源于欧洲,其开 发的目的是让全球各地的用户能够共同使用同一个移动电话网络标准,使用户使 用一部手机就可以行遍全球。 蓝牙(bluetooth)、wifi(wirelessfidelity)、3g,and edge(enhanced data rate for gsm evolution):蓝牙是一种短距离、开放、低成本、新型的无线连接技术,可以 取代短距离电缆,实现语音和数据的无线传输18。edge,即增强数据速率 gsm 演进技术19。它是一种从 gsm 到 3g 过渡的技术,它主要是在 gsm 系统里采用 一种新的调制方法,最先进的多时隙操作及 8psk 调制技术20。由于 8psk 技术可 将现有 gsm 网络所采用的 gmsk 技术的信号空间从 2 扩展到 8, 以使每个符号所 包含的信息变为原来的 4 倍21。wifi,无线保真技术,和蓝牙技术相同,都属于 可以在家庭和办公室中使用的短距离的无线技术。该技术所使用的是 24ghz 左 右的频段,该频段目前尚属于没用许可的无线频段22。该频段目前可使用的标准 有两个,分别为 ieee80211a,ieee8021lb23。该技术有着其自身的优点。 accelerometer、gps(global positioning system)、compass、and camera:gps, 全球定位系统。该系统是由覆盖全球的 24 颗卫星所组成的。这个系统可以保证在 地球上任意一点,任意时刻都可以同时观测到 4 颗卫星,从而保证卫星能采集到 该观测点的高度和经纬度,以便实现授时、导航、定位等功能。这项技术能用来 引导飞机、车辆、船舶以及个人,使其安全、准确的沿着选定路线,准时到达目 的地。gps,即全球卫星定位系统。该系统由三部分组成:用户数据备份部分 第二章 相关技术 5 gps 信号接收机;空间部分gps 星座;地面控制部分地面监控系统。 强大的开发环境:包括调试工具,一个设备模拟器,内存和性能检测工具, 以及 eclipse ide(integrated development environment 集成开发环境)。 2.1.3 android 系统组件 本小节从应用程序、应用程序框架、android 的库三个方面对 android 系统的 组件进行介绍。 应用程序:android 系统会附带一些核心应用程序,包括通讯录,短信程序, 日历, 浏览器, 地图, email 客户端等。 所有应用程序都是由 java 编程语言完成的。 应用程序框架:开发人员可以同那些核心应用程序一样,拥有访问框架 apis 的所有权限。应用系统结构的设计简化了各组件之间的重用,同时任何应用都可 以分发属于自己的组件,而且在遵循框架的安全性约束的前提下,任何应用还可 以使用这些分发的组件。这个机制对于用户来说也同样适用,用户们也可以替换 组件。有一套服务隐藏在每个应用后面,其中包括以下几点: 1 一套扩展性很强, 表现丰富的 view。 通过这些 view 用户可以创建包括 list (列表)、grid(宫格)、按钮、文本框、甚至一个嵌入浏览器的应用。 2contentproviders(内容提供器),通过 content providers 可以在某个应用 之中访问其他应用的数据(例如电话簿),也可以共享自己的数据。 3resourcemanager(资源管理器),提供使用者对静态资源的访问能力,比 如国际化文本和布局文件。 4notificationmanager(通知管理器),通过通知管理器,所有的应用都能在 状态栏显示自己的提醒消息。 5activitymanager(活动管理器),用来管理应用的生命周期,还提供了通 用的向后导航功能。 android 的库:android 的库被应用于 android 系统中的各种组件里,这些功 能通过 android 应用开发框架呈现给开发人员。android 运行时包括一组核心库, 该核心库提供了 java 语言核心库中的几乎全部功能。每一个 android 应用程序运 行在自己的进程里,使用自己的 dalvik 虚拟机实例24。该虚拟机可以让一个设备 运行很多个 vm。dalvik 虚拟机执行 dalvikexecutable 即后缀为“.dex”的文件,这 种格式的文件经过优化后占用非常少的内存。dalvik 虚拟机是基于存储器的,运 行的是经过 java 语言编译器后的类文件,这些文件通过“dx”工具被转换成 dalvikexecutable 格式。该虚拟机依赖 linux 内核来实现一些潜在的功能,比如线 程和底层内存管理。下面列举一些核心库。 1system c library,实现了 bsd derived 的标准 c 系统库,用于基于 linux 6 基于 android 系统的 mp5 播放器的设计与实现 的嵌入式设备。 2media libraries,基于 packetvideo 的 opencore。该库提供了对许多流行的 音视频格式的播放、回放和录制功能,还包括静态的图片文件,如 mpeg4、h264、 mp3、png、amr、jpg 和 aac 等等。 3surface manager,用于管理不同应用对应图形显示的子系统以及 2d 和 3d 图形层的访问25。 4libwebcore,它是一个时尚的 web 浏览器引擎。android 浏览器和内嵌的 webview 是基于该引擎实现的。 5sgl,2d 图形引擎,处于 android 底层。 63d libraries,基于 opengles 1.0 api 实现的库;该库用于对 3d 图形加速 或者提供高度优化的 3d 软件光栅器。 7freetype,它提供了一种向量和位图模式的字体绘制。 8sqlite,它是一个个轻量的,强大的关系型数据库引擎,适用于所有的应 用。 2.2 主要技术 android 作为一款开放式操作系统,从而受到众多开发者的欢迎和支持,如今 可以说是真正的开放式操作系统。本节对该 mp5 播放器系统开发过程中所使用的 主要技术进行介绍。 2.2.1 ndk 简介 在 android 系统中,开发者可以使用 java 编程语言来开发应用程序,还可以 通过 ndk 使用 c/c+编程语言来开发应用程序,同时也可通过 sl4a 来使用其他 多种脚本语言来进行编程(例如:php、lua、tcl、python 等),还有其他像:mono (mono for android)、qt(qt for android)等一些著名的编程框架也开始支持对 android 的编程。通过 monodroid,开发者甚至还可以使用 c#编程语言来开发应 用程序。同时,google 公司还于 2009 年特别发布了面向初学者的 android simple 编程语言, 这种语言与basic语言类似。 在网页编程语言方面, ajax、 html5、 jquery、 sencha、javascript、mobl,phonegap、dojo 等等都已支持了 android 开发。而在 android 系统底层方面,android 使用 c/c+作为开发语言。 早期对 android 应用程序的开发,通常通过 android sdk(即 android 软件开 发包),使用 java 编程语言来开发应用程序,通过不同的软件开发包,使用的编 程语言也不相同。 第二章 相关技术 7 例如开发者如果通过 android ndk(即 android native 开发包)开发,就要使 用c或c+编程语言来开发应用程序。 同时, google还于2009年推出了google app inventor 开发工具,这种开发工具能够方便快捷的构建应用程序,给新手开发者提 供了方便。 在 java 开发方面 ,android 支持了使用 java 编程语言来开发应用程序,而且 android 对于 java 开发在接口和功能方面,都体现出层出不穷的变化。考虑到了 java 虚拟机的资源占用和效率问题,google 重新设计了 android 的 java 开发包, 以便可以提高效率和减少对资源的占用,在这一点与 j2me 等不同。 在 c/c+开发方面 ,早期对 android 的开发仅支持 java 作为编程语言来开发 应用程序,因此,使用其他语言的应用程序开发者只能望洋兴叹。直到 2010 年 4 月,谷歌才正式对广大开发者发布了 android ndk(android native development kit),ndk 让广大开发者可以使用 c 或 c+作为编程语言来开发 android 应用程 序,第一版的 ndk 在 android 开发中给广大使用 c/c+的开发者带来了希望。 然而,当前版本的 ndk 在功能方面还存在很多的局限性,例如:ndk 并没 有提供对应用程序的生命周期的维护;ndk 也没有提供对 android 系统中大各种 系统事件的支持;在 ui api(应用程序交互接口)方面,当前版本的 ndk 里也没 有提供。但是,与初版的 ndk 相比,目前的 ndk 已经在功能方面做了许多重大 的改进。从此可以看出,ndk 仍然需要不断的完善和发展,从目前的发展趋势来 看,ndk 一定可以做得更多更好。 2.2.2 系统安全机制简介 在安全权限机制方面,android 系统采用了权限分立机制,即它是一个权限分 立的操作系统。在这种操作系统中,任何应用在运行时都有一个唯一的系统识别 身份。系统的各个部分也分别使用其各自独立的识别手段。linux 也是这样将应用 与系统,应用与应用隔离开来。 android 系统其他的安全功能是通过权限机制提供的。通过权限,可以限制某 个特定进程的一些特定操作,同样也可以限制某个 uri 权限对特定数据段进行的 访问。 设计 android 安全架构的核心思想是,在默认设置下,任何应用都没有权限对 用户、系统或其他应用进行操作。这些操作包括读写其他应用文件,读写用户隐 私数据(如联系人或电子邮件),阻止设备待机或阻止设备访问网络等等。 安装应用时,首先会检查程序签名涉及的权限,在经过用户确认以后,软件 包安装器会授予应用相应的权限。从用户的角度看,一款 android 应用程序通常会 要求以下的权限: 发送短信或彩信、拨打电话、修改/删除 sd 卡上的内容、读取 8 基于 android 系统的 mp5 播放器的设计与实现 日程信息、读取联系人信息、写入日程数据、精确的(基于 gps)地理位置、读 取电话状态或识别、模糊的(基于网络获取)地理位置、对互联网的完全访问、 创建蓝牙连接、查看网络状态,避免手机待机、查看 wifi 状态、修改系统全局设 置、开机自动启动、读取同步设定、终止运行中的应用、重启其他应用、设定偏 好应用、拍摄图片、震动控制等等26。 一款应用程序应该根据自身所提供的功能,申请合理的权限。使用者也可以 分析一款应用所需的权限,从而简单的判定这款应用安全性27。如果一款应用是 具备广告功能的单机版,也不存在任何附加内容需要下载,这样它要求访问网络 的权限就比较可疑了。 2.2.3 系统上层开发简介 android 采用 activity 类创建窗口(windows),处于活动中的 activity 就是 在前景模式,即用户可见的,在背景运行的程序叫做 service(服务)。这两者之 间通过serviceconnection和aidl (android interface definition language,即android 接口描述语言)连结,达到复数程序可以同时运行的效果。如果处于运行状态的 activity 的全部画面被其他 activity 的画面完全遮盖时,该 activity 便转换为停 止状态(stopped),甚至在某些情况下会被系统清除(kill)。 程序员可以通过使用 view 类与“xml layout”将 ui(user interface)放置在窗口 上,android 1.5 版本可以利用 view 创造出所谓的 widgets,其实 widgets 也是 view 的一种,所以可以使用 xml 语言来设计 layout,htc 生产的 android hero 手 机就含有大量的 widgets。至于 viewgroup 是各种 layout(布局) 的基础抽象类 (basic abstract class),viewgroup 里面还可以包含 viewgroup。view 的构造函 数不需要在 activity 之中调用,而 displayable 构造函数的却是必须的。在 activity 中, 要通过 findviewbyid()方法来从 xml 文件之中取得 view,android view 类的 显示大部分是从 xml 文件中读取的。view 与 event(事件)是息息相关的,二者之 间通过listener (监听器) 结合在一起, 任何一个view都允许注册一个event listener, 比如:当 view 要处理用户触摸(touch)事件时,就要在 android 框架中注册一个 view.onclicklistener。此外还有 image 等同于 j2me 的 bitmap。 在中介软件方面,操作系统与应用程序之间是通过中介软件来沟通的,应用 软件分为两层:虚拟机(virtual machine)和函数层(library)。 bionic 是 经过 android 改良的 libc 的版本。同时,android 还包含了 webkit,我们说的,webkit 就是在 apple safari 浏览器下层的引擎。将 2d 或 3d 的内容显示到屏幕上是通过 surface flinger。 android使用的工具链(toolchain)是google自行开发的bionic libc。 android 使用以 opencore 为基础的多媒体框架,opencore 由 7 大块组成: 第二章 相关技术 9 pvauthor 、pvplayer、packetvideo multimedia framework(pvmf)、codec、 openmax、common、operating system compatibility library(oscl)。 android 采用 sqlite 数据库系统做为其多媒体数据库。其数据库又分为两种: 共用数据库和私用数据库。用户可通过 contentresolver 类取得对共用数据库的访 问。 android 采用 skia 作为核心图形引擎,还搭配以 opengl/es。skia 的功能相 当于 linux cairo,但于 linux cairo 相比, skia 的功能还仅仅是雏形。2005 年 skia 公司被 google 公司收购。2007 年,skia gl 源码被发布,现在的 skia 也是 google chrome 的图形引擎。 2.2.4 系统中间层开发简介 android 的中间层大多以 java 实现, 并且使用其特殊的 dalvik 虚拟机。 dalvik 虚拟机是一种“暂存器型态”的 java 虚拟机,变量全部存放于暂存器中,虚拟机的 指令相对较少。dalvik 虚拟机可以有一个或多个实例(instance), 任何个 android 应用程序都拥用一个属于自己的 dalvik 虚拟机供其运行,使得系统在运行程序时 可得到优化。dalvik 虚拟机并不运行 java 字节码(byte code),其运行的以.dex 为后缀的文件。 android 具备其硬件抽象层,即 hal。hal 是能以封闭源码的形式为系统提 供硬件驱动模块。 hal 的目的是将 android framework 层与 linux kernel 层隔开, 使 android 不至于过度依赖 linux 内核, 以达成 kernel independent (不依赖内核) 的概念, 也使得对 android framework 的开发可以在不考量驱动程序如何实现的前 提下进行。 hal stub 是一种代理(proxy)的概念,stub 是以*.so 档文件的形式存在的。 stub 向 hal 层提供操作(operations)函数,并通过 android runtime 向 hal 层 取得对 stub 的操作函数,再 callback(回调)这些操作函数。hal 之中包含了许 多的 stub。runtime 只要说明其 module id ,就可以取得其操作函数。 2.2.5 系统内核简介 在内核方面, android 是运行于 linux 内核之上的, 但并不是 gnu/linux。 因 为在一般的 gnu/linux 里所支持的功能,android 大部分都没有支持,其中包括 ffmpeg 、x11、alsa、cairo、glibc、pango 及 gtk 等都已经被移除。android 又 以skia 取代cairo、 以opencore 取代ffmpeg、 再以bionic 取代glibc等等。 android 为了使其应用商业化,一定要移除被 gnu gpl 授权证约束的部分,比如 android 10 基于 android 系统的 mp5 播放器的设计与实现 将驱动程序移到了 userspace,从而使 linux 驱动与 linux 内核被彻底的分开。 kernel/libc/ bionic/并不是标准的 kernel header files(内核头文件)。android 的 kernel header 是利用工具通过 linux kernel header 产生的,这样做的目的是保留宏、数据 结构与常数。 目前的 android linux kernel 控制包括 security(安全),memory management (存储管理器) , process management (程序管理器) , network stack (网络堆栈) , driver model(驱动程序模型)等等。在下载 android 源代码之前,首先要安装构 建工具 repo 来初始化源代码。android 引入 repo 的目的是用来辅助 git。 2.3 开发工具 开发该 mp5 播放器系统需要具备以下条件:linux/windows 系统,eclipse 集 成开发环境,jdk(eclipse 运行环境),android-sdk(android 开发环境)。 1.集成开发环境 eclipse eclipse 是一个开放源代码的、基于 java 的可扩展开发平台。就其本身而言, 它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,eclipse 附带了一个标准的插件集,包括 java 开发工具(java development tools,jdt)。 虽然大多数用户很乐于将 eclipse 当作 java 集成开发环境(ide)来使用, 但 eclipse 的目标却不仅限于此。eclipse 还包括插件开发环境(plug-in development environment,pde),这个组件主要针对希望扩展 eclipse 的软件开 发人员, 因为它允许他们构建与 eclipse 环境无缝集成的工具。 由于 eclipse 中的 每样东西都是插件,对于给 eclipse 提供插件,以及给用户提供一致和统一的集 成开发环境而言,所有工具开发人员都具有同等的发挥场所。 这种平等和一致性并不仅限于 java 开发工具。尽管 eclipse 是使用 java 语 言开发的, 但它的用途并不限于 java 语言; 例如, 支持诸如 c/c+ 和 cobol 等 编程语言的插件已经可用,或预计将会推出。eclipse 框架还可用来作为与软件开 发无关的其他应用程序类型的基础,比如内容管理系统。 基于 eclipse 的应用程序的一个突出例子是ibm subnetworkscreen.setbackgroundresource(r.drawable. network_screen_bg); layout.addview(subnetworkscreen, subnetworkscreenparams); subbookscreen =new imageview(context); 第五章 系统详细设计与实现 35 subbookscreen.setbackgroundresource(r.drawable.book_screen_bg); layout.addview(subbookscreen, subbookscreenparams); fourpartanim(); 上述代码以网络个 电子书两个子模块 为例 进行说明。 首 先初始化 subnetworkscreen 对象,接着通过 addview 将其添加到 layout 之中。当系统切换 到桌面时会调用 fourpartanim 函数,首先初始化 networkanim 动画对象,该对象用 于网络模块缩略图,设置好参数后通过 startanimation 方法启动,接着在 networkanim 动画结束后,通过调用 onanimationend 方法启动电子书模块动画。 2)子模块切换 用户可以从桌面切换到任意子模块。下面结合代码对其实现进行说明。 viewstub stubmovie = (viewstub) draglayer.findviewbyid(r.id.stub_movie_page); moviepage.setlauncher(this); moviepage.setviewstub(stubmovie); moviepage.show(); 这里以音乐模块为例进行说明。音乐模块页面被定义为 viewstub 的形式。它 由两部分组成,一部分为 xml 代码,该页面的 visibility 属性被定义为 gone。在 launcher 类中通过 id 获取到 stubmovie 对象, 通过 show 和 hide 方法控制其显示和 隐藏。 5.2 视频模块详细设计与实现 本节从主要类的设计、算法设计和界面设计几个方面对视频模块的详细设计 与实现加以介绍。 1.视频模块主要类的设计 视频模块主要的类包含 moviepage、localmovielistview、localmovieadapter 等。其中 moviepage 控制着该模块中界面元素的布局,对用户的操作做出响应, 控制着模块的隐藏和显示。其他两个类分别继承了 listview 与 adapter 两个类, 36 基于 android 系统的 mp5 播放器的设计与实现 并且共同控制着视频列表的显示。图 5.3 为 adapter 结构图。 其中 listview 表示用来显示视频列表的视图;adapter 是用来把数据映射到 listview 上的中介;data source 包括 cursor 和 arraylist,是被映射的字符串、图 片等。视频模块采用的是 arraylist,其中主要包括获取到是视频文件的路径以及 播放时间等。 data source arraylistcursor listview adapter 图 5.2 adapter 结构图 2、算法设计 视频模块的算法设计主要分为视频的读取、视频播放和转盘设计三个部分。 1)视频读取 对于本地的文件,如视频,音频,电子书等,系统常常要将其读取,并显示 在界面上。以视频文件为例,具体方法如下: private string mregex = “.+.(mp4|mp4|rmvb|rmvb|rm|rm|3gp|3gp|avi|avi|mkv|mkv|flv|flv)$“; public static final string root_path = “/flash/“, “/sdcard/“ ; mfilemanager = new filemanager(5, mregex, root_path); filepathlist = mfilemanager.getfilepathlist(); mrexgex 限制了读取文件的后缀,rootpath 指定文件的路径,filemanager 的第一个参数指定了读取文件的目录深度,最后将文件路径的列表保存在 filepathlist 中。 2)视频播放 用户可以通过点击本地视频列表或者点击视频模块背景环幕的视频截图等方 式打开本地视频,启动指定的视频播放器对视频进行播放。这种方法都是通过 intent 的方式打开视频文件的。 intent 分为直接 intent 和间接 intent 两种。 直接 intent 为指定了 component 属性的 intent,其调用了 setcomponent 或者 setclass 方法。通 过指定具体的组件类, 通知应用启动对应的组件。 间接 intent 是没有指定 comonent 第五章 系统详细设计与实现 37 属性的 intent。这些 intent 需要包含足够的信息,这样系统才能根据这些信息,在 在所有的可用组件中,确定满足此 intent 的组件。在该模块的视频播放采用的是间 接 intent。具体方法如下: intent intent = new intent(intent.action_view); intent.setdataandtype(uri.fromfile(new file(moviepage.videolist.get(groupindex * 6 + itemindex).getvideopath(), “video/*“); context.startactivity(intent); 首先初始化 intent 对象,接着通过 setdataandtype 方法将视频代表文件的路 径和打开的方式这两个字段写入到 intent 中。 其中代表打开方式的字段即为文件的 mime 类型,本例中为 video。最后通过 startactivity 方法启动该 intent,此时系统 会根据 mime 类型启动相应的视频播放器,达到打开该视频文件的目的。 3)转盘设计 转盘存在于视频和音乐模块中, 它是继承了 view 类, 转盘中分布着若干图标, 通过转动将某个图标移动到中间位置后,实现其对应的功能。当该视图被加载时, 其内部会启动一个线程,该线程会不停读取托盘转动的角度(初始为 0)。当用户 转动托盘是,会自动调用该视
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论