动智能终端平台的流媒体软件是Dopool的手机电视软件,其支持视频的在线直播。但在测试中,仍然出现了消耗内存大、画质暂停、音质效果不好(断断续续)等弊端。
由此可见,基于移动智能终端的流媒体播放器软件的设计并不是一件容易的事,其在国内外都还处于研究、实践中,其难点主要源于移动终端的特殊性:内存小、处理器处理能力较为薄弱、移动网络不稳定、网络带宽十分有限等。
1.3 论文主要研究工作
本文旨在设计并实现一个基于Android平台的流媒体客户端软件,使压缩、编码后的音/视频能够适应网络变化,在Android系统上更加顺畅、稳定的播放,满足用户随时随地享受音/视频带来的无穷乐趣的目的。为达到论文选题的预期目标,本文主要完成了以下研究工作:
① 研究了嵌入式Android系统的系统架构、开发模式及重要组件的生命周期。
② 研究了与移动流媒体客户端相关的标准与协议,包括实时流媒体传输协议
RTSP/RTCP协议、RTP协议,以及MPEG音频标准、MPEG4视频标准等。
③ 与项目中参与开发工作的人员进行充分的沟通、协调配合,完成了需求分
析、总体设计。
④ 设计并实现了网络通信模块,包括了RTSP包的发送控制、RTCP包的发
送和RTP包的接收。
⑤ 基于Android平台中多媒体框架的核心OpenCore库,实现了客户端系统
音频/视频的解码。
⑥ 最终实现了移动流媒体客户端系统,完成了需求上所要求的功能,并对其
做了相关性能测试,达到了预期的效果。
1.4 论文的组织结构
第一章 绪论:从选题背景出发,描述了开发一套基于Android平台的流媒体客户端软件的目的与现实意义。基于以上内容,查阅国内外的文献资料,了解国内外同类型系统的研究现状,为系统后续的分析、奠定理论基础。
第二章 系统关键技术:首先对Android系统进行了简单的介绍,然后从Android的系统构架、应用程序组成等方面介绍了Android平台及其功能,最后从本文关注的流媒体播放出发,介绍了流媒体技术、视频压缩解码技术和流媒体传输协议。
第三章 基于Android平台的流媒体客户端软件需求分析:分析了该流媒体客户端软件的功能需求和非功能需求,从整个系统的功能出发,描述了本人的设计工作部分--音/视频播放子系统的功能需求,并使用UML用例图进行了详细的需求分析,进一步明确了系统的需求,为下一步系统设计做好了铺垫。
第四章 基于Android平台的流媒体客户端软件设计:首先明确了系统的运行环境,然后按照需求分析的内容,将系统划分为2个子系统。针对本人研究的音/视频播放子系统进行了模块划分,将其分为音/视频播放模块和扩展模块,其中音/视频播放模块又被细分为数据接收、数据预处理、解码播放子模块进行设计;扩展模块则被分成文件列表管理、播放列表管理、智能搜索子模块进行设计。最后,对系统中所用到的数据库进行了设计。
第五章 基于Android平台的流媒体客户端软件实现:首先分析了系统框架的实现原理。然后分析了每个模块的实现过程,给出了核心的实现方法,尤其对裁剪、优化FFMPEG库,并将其移植到Android平台上进行了较为深入的说明。最后,通过功能截图展示了系统的实际运行效果。
第六章 基于Android平台的流媒体客户端软件测试:首先介绍了系统的测试环境,然后说明了功能测试的用例和性能测试的相关参数,最后对测试结果进行了分析。结果表明:该流媒体客户端软件能够正常播放音/视频文件,性能优越。
第六章 总结与展望:对该选题的研究成果进行总结,并对选题系统后期的完善工作提出了可行的建议。
2 系统关键技术
2.1 Android概述
2007年11月5日,Google公司发布了一款名为Android(中文意思为机器人)的操作系统,这个操作系统是基于Linux内核的开源操作系统,主要应用于移动智能终端。目前,Android操作系统已经取得了巨大的成功,与Windows Phone、IOS等手机操作系统并驾齐驱,成为是主流的手机操作系统之一,Android的成功,主要来源于它的开放性,能够使开发者自由的发挥、自主创新[13]。
Android系统在Linux核心应用的基础上,向广大程序开发者提供了各种函数库和完整的应用程序框架。此外,Android系统还在Linux核心上提供了一种名为Dalvik的Java应用程序运行环境,与Sun公司的Java虚拟机有所不同,Dalvik是Google独创的专门针对于Android平台进行优化的虚拟机。为了吸引全世界的应用程序开发人员参与Android平台应用程序的开发,Google公司还提供了完全免费的跨平台的开发工具包(SDK),它们已在Windows、Mac OS X、Linux等平台得到了成功的应用。
Android系统主要具有开放性、所有的应用都平等、应用间无界限、快速便捷开发应用的优势。
① 开放性
Android是一个真正意义上的开放性移动智能设备综合平台,它的开放性主要表现在:Android操作系统本身的源代码完全开放,它可以自由的吸纳新的尖端技术;应用程序的自由性。例如一个应用程序可以调用系统电话服务中的拨打电话、监听电话状态、发送文本信息等核心功能,允许开发者创建更丰富、自由度更高的应用程序;通过与运营商、设备制造商、开发商以及其他有关各方结成深层次的合作伙伴关系,来建立标准化的手机软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持[14]。
② 所用的应用都平等
Android系统并不会区分手机中的系统级应用程序或第三方应用程序,所有的应用都运行在一个核心的引擎上面,这个核心的引擎就是Dalvik虚拟机,它提供了一系列用于应用和硬件资源间通信的API服务,所有应用都可以平等的享有系统资源,使用这些服务[15]。例如开发者可以任意替换手机的风格界面,控制手机使用自定义的图片浏览器程序,按照自己喜欢的方式排列图片、浏览图片。
③ 应用间无界限
Android打破了应用之间的界限,例如开发者可以将Web上的数据与本地的联系人、日历、位置信息结合起来,为用户创造全新的用户体验[16]。例如使用Android系统,开发者可以获得其他Android设备的位置信息,允许不同设备之间的交流通信,使得Android平台下的点对点社交成为了可能。
④ 快速便捷开发应用
Android系统为开发者提供了大量的实用库和工具,开发者可以快速便捷的开发出自己的应用。例如在Symbian、Windows Phone手机平台上要进行位置应用的开发是相当复杂的,而Android系统集成了Google Map,开发者只需要通过简单的几行代码就可以实现一个基于地图位置的应用[17]。另外,Android还包含了平台周边的应用,开发者可以高效的开发深入的应用程序。
2.2 Android架构
Android是一个软件的集合,它包括了操作系统、中间件、针对移动终端的应用程序框架,这样一个集合形成了Android层次架构。如图2.1所示。
图2.1 Android系统结构
Fig. 2.1 The Architecture of Android System
Android系统架构由Application层、Application Framework层、Libraries层和Linux Kernel层组成。其中Linux Kernel层为Android的操作系统,Libraries层和Application Framework层组成了中间件,Application层在整个架构的最上层。
在此架构中,最底层的Linux Kernel是由C语言编写的,而Libraries层中的Libraries是由C、C++编写的,运行时环境中的Android核心库则是用Java语言编写的。上层应用包括应用程序框架也都是用Java语言编写的。从此可以看出:虽然说底层架构采用的是C、C++语言,但对于应用程序的开发采用Java语言
上一篇:
基于Android平台的手机电子书阅读器设计
下一篇:
试论APP广告在手机中的应用