




免费预览已结束,剩余63页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业论文(科研训练、毕业设计)题 目:基于J2ME的手机流媒体音频播放器开发系统MVC架构、用户界面与播放引擎的设计与实现姓 名:学 院:软件学院系:软件工程专 业:软件工程年 级: 学 号:指导教师(校内): 职称: 指导教师(校外):陈初铨 职称: 年 月摘要移动通信和互联网是当今信息产业发展的两个热点,两者融合产生的移动互联网及其应用,为信息产业带来了巨大商机。近年来,流媒体如雨后春笋般发展了起来,随着移动通信网从2.5G向3G不断演进以及手机性能的不断提高,通过手机收听流媒体音频节目开始成为一种潮流。作为毕业设计课题,我们设计开发了一款能在手机上收听全球流媒体音频节目的播放器。该播放器基于J2ME平台,通过移动网络与Web Service服务器和流媒体服务器进行交互,集成了节目列表浏览、节目搜索、节目点评推荐和流媒体播放功能。本文从J2ME平台特性和网络流媒体的特点入手,重点论述基于J2ME平台的手机流媒体音频播放器的设计及实现方法,并展示软件的运行及测试结果,然后对本课题开发的手机流媒体音频播放器做了总结,展望该领域未来的技术发展方向和行业前景。关键词:J2ME;MMAPI;移动流媒体;手机播放器AbstractMobile communications and the Internet are two focuses of the information industry now and they produce mobile Internet and its applications, which bring enormous business opportunity to the information industry. In recent years, the streaming media develops rapidly. With the mobile communications network evolves from 2.5G to 3G and the performance of mobile phones improves constantly,listening to streaming media programs via a mobile phone becomes a trend.As a graduation design subject, we design and develop a streaming media audio player, which can listen to all of the streaming media programs around the world through mobile phones. The player is based on J2ME; it interacts with web service servers and streaming media servers through mobile networks. We integrated programs listing, programs searching, programs commenting, program recommending and streaming media playback to this software. This paper starts with the basic tenets of J2ME platform characteristics and network streaming media features. Focus on J2ME-based mobile streaming media audio players design and implementation. Also I will show the operation and test results of this software. Finally, the prospect of further research work is proposed based on this paper.Keywords: J2ME;MMAPI;Mobile streaming media;Mobile player目录第一章引言1第二章系统相关技术概述32.1 J2ME平台简介32.2 J2ME中的MVC设计模式42.2.1 J2ME应用程序框架的现状42.2.2 基于MVC模式的J2ME应用程序框架52.3 J2ME中的图形用户界面设计技术82.3.1 屏幕模型82.3.2 低级用户界面和高级用户界面92.4 J2ME中的移动多媒体API92.5 网络流媒体的特点11第三章系统总体设计123.1 系统概述及功能123.1.1 开发背景123.1.2 总体目标123.1.3 功能需求133.1.4 非功能需求143.3 系统架构和模块划分153.4 软、硬件配置17第四章系统详细设计184.1 系统MVC框架设计184.1.1 MVC框架结构图184.1.2 Model层184.1.3 View层194.1.4 Controller层204.2 用户界面UI模块设计234.3 音频播放引擎模块设计254.3.1 J2ME下实现音频播放254.3.2 J2ME下实现流媒体播放274.4 数据存储模块设计304.4.1 File Connection API与记录管理系统304.4.2 用户数据的存储和加载设计及实现314.5 网络通信模块设计334.5.1 客户端与Web Service服务器通信设计344.5.2 客户端播放引擎与流媒体服务器通信设计36第五章系统测试及运行结果395.1 功能测试395.2 性能测试415.3 运行结果42第六章总结44致谢46参考文献47ContentChapter 1Introduction1Chapter 2System related technologies outline32.1 Introduction to J2ME platform32.2 MVC design pattern in J2ME42.2.1 The status of J2ME applications framework42.2.2 J2ME applications framework based on the MVC52.3 The GUI design technologies in J2ME82.3.1 Screen model82.3.2 Low-level user interface and Advanced user interface92.4 Mobile Media API in J2ME92.5 Network streaming media features11Chapter 3System overall design123.1 System profiler and function123.1.1 Development background123.1.2 Overall objective123.1.3 Functional requirements133.1.4 Non-functional requirements143.3 System architecture and module division153.4 Software and hardware configuration17Chapter 4System detail design184.1 System MVC framework design184.1.1 MVC framework and structural graph184.1.2 Model layer184.1.3 View layer194.1.4 Controller layer204.2 Graphic User Interface module design234.3 Audio player engine module design254.3.1 Playing audio in J2ME254.3.2 Playing streaming media in J2ME274.4 Data storage module design304.4.1 File Connection API and RMS304.4.2 User data storage and loading design and implementation314.5 Network communications module design334.5.1 Client communicates with Web Service server344.5.2 Player engine communicates with streaming media server36Chapter 5System testing and the running results395.1 Functional test395.2 Performance test415.3 Running results42Chapter 6Summarize44Acknowledgement46References47第一章 引言第一章引言随着3G时代的到来,移动互联网飞速发展,出现了各种具有无线互联网功能的移动智能终端(如:掌上电脑、手机、双向寻呼机等),使得拥有这些智能终端的人们可以随时随地完成以前只有在办公室或家里才能完成的工作,人们可以在移动中办公。智能终端和无线互联网已经成功地应用到人们生活的方方面面。无线通讯近几年来得到了突飞猛进的发展,其改变了有线通信的局限性,给随时随地的信息交流提供了极大便利。近几年来,在移动终端平台所支持的各项功能和业务中多媒体功能正在变得越来越重要。娱乐功能已成为移动终端最重要的功能之一,而打造一个强大的娱乐功能平台的关键在于多媒体功能,具体地说就是音频、视频和流媒体等功能。随着手机硬件平台性能的不断提升,这些昔日只有高端手机才具有的照相、摄像、音频/视频播放、流媒体播放等功能,已经逐步成为普及型手机的标准配置,因此多媒体功能也就成为手机中非常重要的功能模块。移动通信和互联网是当今信息产业发展的两个热点,两者融合产生的移动互联网及其应用,为信息产业带来了巨大商机。同时,J2ME平台植入手机的举动使得手机的功能拓展成为一个可随身携带的微型计算机,使得手机用户可以随时随地享受互联网服务。近年来,流媒体如雨后春笋般发展了起来,并以其独特的魅力给人们带来了一种全新的媒体感受。然而目前,用户收听流媒体节目都是通过在PC机上安装客户端软件的方式进行收听,而要达到真正的随时随地收听流媒体节目,则应采用具有流媒体解码能力的多媒体终端收听,真正使收听流媒体从复杂的电脑应用转变为简单的无线终端操作,让更多的人能通过嵌入式终端设备收听到互联网上发布的全球各地的流媒体节目。随着移动通信网从2G向2.5G和3G不断演进以及手机性能的不断提高,通过手机收听流媒体节目也开始成为了一种潮流。为了抢占市场先机,各著名手机厂商开始在自己的手机产品中开发和内置针对特定手机平台的流媒体播放器,如诺基亚(Nokia)公司在其发布的多款手机设备中内置了Real Player播放器。这些举动,无疑为流媒体在移动互联网领域的发展提供了一个极大的机遇,也为众多商家提供了一个商业发展的机会。但是手机厂商在手机设备中开发或内置针对特定手机平台的流媒体播放器存在功能单一、可移植性差、开发效率低、维护成本高等缺点,这将有可能会减缓手机流媒体业务的发展速度。针对上述缺点,我的毕业设计在J2ME平台上设计和实现了一款可移植性高、功能丰富、易维护的手机流媒体音频播放器应用软件。本毕业设计课题来源于嵌入式实验室的一个项目,主要目标是设计开发一款能让用户在手机上收听到全球各地流媒体节目的播放器软件。该系统基于J2ME平台,通过移动网络与Web Service服务器和流媒体服务器进行交互,集成了节目列表浏览、节目搜索、节目点评推荐和流媒体播放功能。本软件在开发实现过程中采用模块化、结构化的软件设计思想,提高系统的可移植性和可维护性,在实现技术上,采用MVC模式来组织系统总体框架,用户界面采用低级用户界面和高级用户界面相结合(以低级用户界面为主),播放引擎采用移动多媒体API(Mobile Media API,JSR 135) 处理流媒体音频,实现对HTTP协议传输的MP3格式音频流的解码,使用多线程技术,实现在播放缓冲区中音频数据的同时,不断地从服务器下载后续音频数据到客户端缓冲区,即“边下载,边播放”,给用户带来“实时播放”的业务感知体验,同时通过Web Service实现本软件与门户系统的互动和信息传递。当前在J2ME平台上实现流媒体播放还没有形成一定的标准和固定的模式。本文的提出,是一次有益尝试。经测试,本文设计的手机流媒体播放器已经成功应用到诺基亚的E51、N73、5700等手机设备上,同样,它可以方便地应用到任何具有Java虚拟机的手机终端上。从性能测试的结果上看基本达到了商业应用的水平,随着3G时代的来临,具有广阔的产业化前景。47第二章 系统相关技术概述第二章系统相关技术概述2.1 J2ME平台简介J2ME广泛应用于消费和嵌入式设备中。它在汽车、电子元器件、工业自动化、医疗设备、航天和军事、办公自动化、商业零售、电信和数据中心、信息自动化、远程控制等各个行业都有广泛的应用。现在国内外使用J2ME比较多的应用包括车载信息和计算、数字电视机顶盒、Internet访问设备、家庭Audio/Video、无线手持设备等。图2.1是一张描述J2ME在家用电器中使用的状况图。J2ME在家用设备中有着广泛的用途,这在国内外J2ME的使用中也已得到证明。图2.1 J2ME在家用电器中使用的状况图在高级层次,J2ME被定义到两类产品中:共享的、固定的、连接的设备以及个人的、移动的、连接受限的设备。J2ME所面对的是大量不同的设备,它们在外观和功能上均各不相同。J2ME在对这些设备进行分类时,将一些共性提取出来形成适合于某个范畴中设备可用的规范称为配置(Configuration),包含虚拟机和核心的类库,它们都是一些通用的特性,能在所有的平台上通用;J2ME将某一个行业或领域内设备的特性提取出来,形成简表(Profile),指的是某个行业或某个领域内特定的特性总结,它们不是通用的东西,是针对某一类设备所制定的规范和API,它们只在某些设备上可用。J2ME使用配置和简表定制Java运行时环境(JRE)。作为一个完整的JRE,J2ME由配置和简表组成。配置决定了使用的JVM,而简表则通过添加特定于域的类来定义应用程序。配置将基本运行时环境定义为一组核心类和一个运行在特定类型设备上的特定JVM。简表定义应用程序,特别地,它向J2ME配置中添加特定于域的类,定义设备的某种作用。图2.2展示了J2ME结构的层次关系,配置和简表提供特殊环境的类应用程序接口。配置是用于一组通用设备的最小的Java平台,而简表则为具体的设备家族或特别的应用程序提供更具体的能力。1图2.2 J2ME层次2.2 J2ME中的MVC设计模式2.2.1 J2ME应用程序框架的现状通常来说,J2ME程序都是比较小的,多数在100KB以下。而且其中大部分是图片和声音,代码只占其中很少一部分。在J2ME程序比较小时,为了提高程序的执行效率,通常的做法是用一个类来完成整个应用程序,在回调函数commandAction()中完成所有界面切换工作。2例如:public void commandAction(Command cmd,Displayable disp)if(cmd=getCommand¤tView=mainForm).else if(cmd=getCommand¤tView=listForm).else.这种模式的好处在于代码量最小,能得到最小的jar包尺寸,执行起来效率也最高;而且,所有界面都在同一个类中,它们可以很方便地共享数据。但如果界面很多,程序很大,这种模式就体现出它的劣势了。一方面,几千行的代码集中在一个类里,调试和维护非常不方便。另一方面,由于很多界面都在同一个类中共享数据,使得它们的耦合度大大提高。如果要替换或修改其中某个界面,很可能会影响到其他界面。这就给开发程序带来了很大的不便。3随着嵌入式硬件的发展,J2ME软件的复杂度也越来越大,上述设计模式已不能适应嵌入式发展的需求。这就需要一个更好的设计模式来取代以前的简单设计模式。下面就介绍一下如何把MVC设计模式应用到J2ME程序设计中。2.2.2 基于MVC模式的J2ME应用程序框架MVC是一种很好的客户端软件设计模式,但目前一般只用于PC上。以JAVA为例,目前已经可以看到MVC大量地应用在J2EE和J2SE上,可是还很少见到在J2ME上使用MVC模式。这是为什么呢?有以下两点原因:(1)大部分的J2ME应用都很简单,开发周期也很短,很多开发人员偏爱把所有代码写在一个类中,认为没有必要使用复杂的设计模式;(2)使用MVC模式在某种程度上会增大代码体积,并且有可能影响程序的执行效率,这在资源相对有限的J2ME系统上是一个不可忽视的问题。可是随着嵌入式硬件的发展,移动设备的性能有了很大的提高,从而带动了应用软件的发展。J2ME应用软件变得越来越复杂,如果还像以前那样使用一个类来完成所有的代码,必将使得程序可读性差、扩展性差、可维护性差。如果把MVC模式应用在J2ME应用程序设计中,就可以解决以上的问题。下面列举并分析几种在J2ME中比较适合的MVC模式。(一) 单一控制器的MVC模式整个程序中使用同一个Controller来控制界面的切换和事件的处理等,如图2.3所示。在J2ME应用程序中,界面的切换是比较常见的操作,利用这种单一控制器的MVC模式,可以很容易地实现界面的切换,如图2.4所示。ViewControllerModel图2.3 单一控制器的MVC模式类图View1View2ControllerModelEventRequest DataReturn DataPrepare ViewShow View图2.4 单一控制器的MVC模式界面切换顺序图由于界面切换流程都在这个Controller中进行管理,所以程序流程制定得非常清晰。但是由于只有一个控制器,所以如果界面很多、很复杂,就会使得这个控制器十分庞大,影响到开发效率。(二) 多个控制器的MVC模式当应用程序界面很多时,可以使用多个控制器的MVC模式,如图2.5所示。View11View12View21View22Controller1Controller2Model1Model2图2.5 多个控制器的MVC模式类图这种模式按照程序模块把界面分成若干个部分,每个部分使用一个控制器来控制。这样做的好处是程序模块划分得很清楚,程序结构更加清晰,也不至于使得一个控制器过于庞大;缺点是程序的类数量更多,控制器之间增加了通信开销。(三) 简化的MV模式上面的两种程序设计模式已经很常见于PC上的应用软件设计,但是通常来说,由于基于移动设备的J2ME应用软件复杂程度相对PC上的要低许多,有时候本来就只有几个类,如果完全照搬PC上的MVC模式,反而会使程序框架变得更加复杂。这时,可以采用以下的一种变形:MV模式(或称为MC-V或M-VC模式),如图2.6所示。ViewModel图2.6 MV模式类图在这种模式中,由于去掉了控制器,于是把控制器的功能合并到View或Model中。如果把Controller合并到View中,则可称其为M-VC模式;如果把Controller合并到Model中,则可称其为MC-V模式。(四) 更加简化的V模式如果认为上面这种简化的MV模式还是过于复杂,那么可以考虑下面的V模式,如图2.7所示。BaseView+prepareView()+showView()View1View2View3图2.7 V模式类图在这种模式中,已经完全省略了Model和Controller,只剩下View了。界面的切换和数据的处理都在各个界面的View中独立完成。这样使得类的数量极大地减少,程序执行效率有一定的提高,可是从另一个方面来说,程序的耦合度也增大了。所以,只有在程序十分简单、数据量非常小时才使用。当J2ME应用程序比较庞大时,将MVC设计模式应用于程序的框架设计是一个不错的选择;而当应用程序比较简单时,MVC模式的缺点就暴露出来了,这时可以考虑使用MVC的简化模式MV模式,甚至是V模式。2.3 J2ME中的图形用户界面设计技术2.3.1 屏幕模型MIDP用户界面的核心概念就是屏幕(Screen)。每个MIDP应用有一个Display,在其上显示单一的屏幕,应用程序根据用户的交互,为任务的每个步骤在Display上放置和重置当前屏幕。应用收到用户选择命令的通知,然后按照需要改变屏幕显示。每个Screen(从技术上讲就是每个Display对象)是一个用户界面的功能元素,封装了设备特定的图像显示和用户输入处理。有两种类型的Displayable对象:(1) Canvas:允许应用提供图像以及处理用户输入的低级对象。(2) Screen:封装了完整的用户界面组件的高级对象。2.3.2 低级用户界面和高级用户界面Canvas的低级用户界面API是为需要图形元素精确定位和控制以及需要获得低级输入事件的应用设计的。使用低级用户界面API的应用可以:(1) 控制在屏幕上画什么。(2) 处理原始事件,比如键的按下和释放。(3) 获取按键和其它设备输入。利用低级API编程的应用如果仅仅使用标准特征那么就是可移植的,应用应该在任何可能的情况下尽量使用低级API独立于平台的部分,也就是说应用不能存在Canvas类中定义的键之外的键。另外,应用应该考虑屏幕的大小并且据此调整其行为。高级用户界面是为商业应用设计的,这些应用的客户端组件运行在移动信息设备上。对这些应用来说,跨设备的可移植性是重要的。为了实现这种移植性,高级用户界面API使用高级抽象并且在外观和感觉上提供非常少的控制。2.4 J2ME中的移动多媒体API在当前世面上存在着大量的不同媒体格式,并且还有许多新的媒体格式即将被建立。为了存储和传输这些不同的媒体格式,存在着许多不同格式的存储设备和传输协议,例如大家常使用的媒体存储设备(如CD、VCD以及DVD),有线传输协议(如UDP、HTTP),无线传输协议(如WAP)。为了使移动装置能够访问这些不同格式的媒体数据,必需为其设计一个规范化的、强大的和可扩充的应用接口。J2ME中就提供了一套为规范播放和录制音频或视频而设计的接口,即Mobile Media API (MMAPI,JSR 135)。 一般情况下,可以将媒体处理过程分解为两个过程:(一) 处理媒体数据的传输协议的过程处理传输协议的过程是指从数据源(如一个文件、一个捕获装置或一个流服务)上读取媒体数据内容后,将其传送到媒体数据内容处理的过程。MMAPI使用Data Source来处理媒体数据的传输协议的过程。一个Data Source知道如何从它的原始位置读取媒体数据并传送给媒体数据处理(Player)。媒体数据可以被保存在不同的位置,从远程服务器到资源文件或者RMS数据库。媒体数据可以从原始位置通过HTTP,像RTP一样的流式传输协议,或者其他机制传输到媒体数据处理(Player)。图2.8展示了Data Source的工作过程。 图2.8 Data Source工作过程(二) 处理媒体数据内容的过程处理媒体数据内容的过程通常需要对媒体数据进行解析和解码,并且还需要识别该媒体的输出设置的类型,如是音频设置或者视频设置。举个例子,当DataSource从某媒体数据源上获取一段MP3媒体数据,并将其传送给处理媒体数据内容过程,此过程首先对这个MP3媒体数据进行解析和解码,同时检测该MP3媒体为音频数据,打开装置的音频设备,将解析和解码后的媒体数据直接传送到装置的音频设备缓冲中,由该音频设备根据缓冲区数据内容产生音频信号。MMAPI使用Player来处理媒体数据内容,它从Data Source中读取媒体数据、解析和解码数据以及识别媒体输出设备和传送媒体数据到输出设备等。Player提供了一套方法去控制媒体的重放和同步。MMAPI还提供了一个或多个Controls来调整Player的行为,可以在Player从媒体转换数据的时候从一个Player实例取得并且使用Controls。J2ME为了实现对DataSource和Player有效管理,使用了工厂机制,由Manager来负责创建Player和DataSource。Manager不仅可以从DataSource中创建Player,而且还可以从本地或InputStream中创建Player。图2.9展示了MMAPI整体结构图。Data SourceManagerPlayerControlSupplies dataProvidesCreatesControls图2.9 MMAPI整体结构图2.5 网络流媒体的特点流媒体是指通过编码器,将电脑里面正在播放的音频或视频数据转换成为可以在Internet上直接传送的格式,而用户登录到流媒体节目的网站时,可以下载到经过编码的音频、视频信息,再通过如Real Player或Winamp等相关软件将其播放出来。流媒体是以流的形式在网络中传输的,其播出效果受网络带宽的影响。一般多媒体数据下载时,需要下载完毕才能观看,而多媒体流的特点是边下载边播放,不占用客户硬盘空间,但需要有一定的网络带宽支持,如果带宽低于多媒体流需要的带宽,会造成视频和音频数据的停顿。与单纯的下载方式相比,这种对多媒体文件边下载边播放的流式传输方式具有以下优点:(1) 实时传输和实时播放:流化多媒体使得用户可以立即播放音频和视频信号,无须等待文件传输结束,这对获取存储在服务器上的流化音频、视频文件,现场回访音频和视频流都具有十分重要的意义。(2) 节省存储空间:采用流技术,可以节省客户端的大量存储空间,在客户端只需由播放器对流化音、视频信息进行回放即可。(3) 信息数据量小:现场流都比原始信息的数据量要小,并且用户不必将所有下载的数据都同时存储在本地存储器上,可以边下载边回放,从而节省了大量的磁盘空间。从网络发展来看,采用流媒体技术有利于提高网络传输速度,为用户节约大量时间,调动用户上网的积极性。从节目质量看,流媒体技术虽然使视音频信号质量有所下降,但对用户不会造成视听障碍。随着网络的发展,网上信息量越来越多,商家可根据不同节目,采用多种传输格式,以满足用户需求。45基于J2ME的手机流媒体音频播放器开发系统MVC架构、用户界面与播放引擎的设计与实现第三章系统总体设计3.1 系统概述及功能3.1.1 开发背景近年来,随着互联网的迅速发展,全球各地的流媒体节目开始通过网络进行发布,用户可以在PC机上收听到这些节目,流媒体节目以其独特的魅力给人们带来了一种全新的媒体感受。同时,随着无线互联网的高速发展和3G应用及手机的日益普及,用手机收看电视,收听广播、阅读报纸,浏览小说,欣赏音乐等已成为一种时尚而这一切都预示着,手机作为一个新的媒体介质,它在通讯之外,开始承担传播信息和文化娱乐的新功能。6在网络上可以找到许多流媒体节目地址,但它们都分散在不同的页面里,用户为了找到某个节目,往往需要费很大的劲才能找到自己需要的URL。为了能够让用户省时省力地找到自己需要的流媒体节目,则必须要有一个平台来统一收集、分类、更新和发布这些流媒体节目信息,同时,在数字媒体版权越来越得到重视的趋势下,也需要一个具有统一的发布、下载、播放、计费等功能的流媒体信息发布平台来管理,并得到一个良性发展的商业模式。我们的课题来源于嵌入式实验室的项目。本设计主要是基于该实验室现有的丰富的流媒体节目信息资源,在手机上实现基于J2ME的手机流媒体音频播放器软件,集成节目信息的分类获取、节目搜索、节目播放和节目点评推荐功能。3.1.2 总体目标我们要设计的是一款手机流媒体音频播放软件,可以随意浏览节目列表并在线收听服务器上提供的全球流媒体节目,同时还提供了节目信息、音频的同步播放模式。用户可以将自己喜爱的节目加入收藏列表中,还可以对正在收听或正在浏览的节目进行投票点评以及将节目信息通过电子邮件发送给好友。系统还记录了用户上一次收听的节目,以方便用户快速收听该节目。更提供节目搜索功能,可以按节目名称、所在国家、风格、语言等分类进行模糊搜索。对某些VIP节目进行权限验证,具有数字版权保护的部分功能。总体目标如下:(1) 在J2ME平台上实现手机上对HTTP流式传输的MP3格式流媒体音频的解析和流畅播放。(2) 可以通过Web Service实现手机流媒体音频播放软件与门户系统的互动和信息传递。(3) 可以收听全球的流媒体音频节目,按国家、语言、格式对节目进行分类和搜索。(4) 实现节目收听排行榜和用户收听偏好设置。(5) 实现跨机型、跨品牌的通用性(主要面向中、高端的智能手机)。(6) 实现系统代码的可维护性和可移植性。(7) 美观、时尚、易用、人性化的用户界面。3.1.3 功能需求从用户的使用角度来看,我们将手机流媒体音频播放软件的功能分为:(一) 基本功能(1) 系统初始化和数据加载:从RMS中加载用户登陆设置,如记住用户名、密码或自动登陆功能,以及初始化登陆界面。(2) 用户登陆和身份验证:将用户密码进行MD5加密,防止密码明文被截获。通过移动网络调用Web Service服务器登陆验证接口,进行用户身份信息验证。(3) 主功能菜单:用户可通过手机键盘选择某一项功能,并进入该功能进行操作。(4) Last Station:用户上次收听的节目。(5) My Preset:用户节目收藏列表。(6) Free Stations:由服务器维护的免费节目列表,通过移动网络从服务器中获取。(7) VIP Stations:由服务器维护的VIP节目列表,通过移动网络从服务器中获取。可按格式、国家、语言分类,在某个分类下选择特定选项,可以获得该分类选项下的所有节目列表。在列表中点击某个节目,调用播放引擎进行播放。(8) TOP Stations:由服务器维护的热门节目列表,通过移动网络从服务器中获取。(9) Search:按节目名称、风格、国家、语言等进行模糊搜索。(10) 播放引擎:节目播放、停止,浏览前后节目信息、查看节目详细信息,将节目推荐给好友,对节目加标签,对节目进行点评投票。(11) About VIP:介绍成为VIP的流程。(二) 未来扩展功能(1) 播客功能:随时随地点播网络上的播客资源。(2) 交友功能:充分利用手机的网络功能,可以搜寻一定地理范围内的朋友,或者查找正在收听或者曾经收听过相同节目的朋友,交流和分享优秀节目。(3) 与门户系统集成:用户可通过门户系统查找和添加自己喜欢的节目到特定列表中,手机客户端列表与该列表保持同步。3.1.4 非功能需求从功能上讲,应该说本系统只是将PC网络上的成熟应用移植到手机网络。在J2ME平台上实现流媒体播放,是一个挑战,同时也是一个机遇,所以真正要使产品具备竞争力,必须在性能等方面有胜人之处。这方面的要求如下:(1) 易操作:操作界面结合手机终端的可操作按键保持简单明了,符合普通人的操作习惯。尽量使得完成功能所需的按键操作最少;(2) 稳定:考虑到网络环境可能不稳定,而且用户可能处于各种可能的移动状态,不能让环境因素影响到程序的运行,不能出现死机或一直等待的状态;(3) 速度流畅:显示快捷,最大限度地减少停滞时间,列表获取和播放界面转换快速。考虑到本软件使用的数据绝大部分是网络音频流数据,较为复杂,在运算和网络传输上都有不小的挑战,如果在手机上播放流畅性很差,肯定不能为市场接受。相反,如果播放过程流畅并且表现突出的话,就可以领先竞争对手;(4) 系统资源消耗低:合理进行资源分配、回收,有效地利用系统资源,禁止死锁现象发生;(5) 兼容性:因为手机的类型各种各样,比如尺寸、显示屏解析度、甚至SDK都会有不同,如果我们的应用只能在很少的机种上运行,或者对每种手机都要重新编写应用的话,这样的应用肯定无法在市场上生存。因此我们的系统架构必须考虑到这些因素,使得应用只需要经过配置文件的修改,或者部分模块很少的修改,甚至不做什么修改,就可以适用于不同的手机。(6) 安全性:无线通信本身的特点是,既容易让合法用户接入,也容易被潜在的非法用户窃听,因此,安全问题总是同移动通信网络密切相关。必须对系统中的一些重要数据进行加密传输。3.3 系统架构和模块划分对于手机这样一种嵌入式平台来说,它的硬件资源有限,没有太大的存储空间。而作为多媒体软件的资源图片,音频,视频等,所占用的空间是巨大的。另一方面,项目的需求中最重要的一条就是我们系统与用户的互动,这样才能改善程序的用户体验。因此,我们设计的多媒体软件无法作为单机版软件独立运行。我们所需要的容量具大的多媒体资源只能通过手机无线网络从服务器上实时传输到手机上。现有的GPRS网络带宽虽然不高,但还是能勉强满足图片和音频资源传输要求的。但是视频资源的传输可能只有等到3G网络普及以后再考虑了。作为我们目前项目的需求,只需图片和音频资源,因此,GPRS就能满足要求了。另外,由于手机的硬件设备运算能力有限,为了客户端软件能更加流畅地运行,我们只能采用瘦客户端的方式来设计,即把大量的运算处理逻辑都放在服务器端,客户端只负责最终的数据显示和与用户的交互行为。服务器方面,考虑到瘦客户端模式加重了服务器的负担,因此采用多台服务器共同工作的方式。通过一台连接服务器统一接入客户端的连接请求,然后利用接入层实现负载均衡,把客户端的处理请求平均分配到多台工作服务器中。所有的工作服务器共享同一个数据库,这样就能做到数据同步。我们的工作主要是客户端软件的开发,服务器实现不是我们本文讨论的重点,这里不再详细展开描述。我们的客户端软件是建立在手机硬件设备和J2ME虚拟机(KVM)之上的。大体上分为MVC框架模块、UI模块、音频播放模块、数据存储模块、网络通信模块五个部分。系统架构如图3.1所示。(1) MVC框架模块:负责系统主体结构,建立一个易于维护的平台,提高开发效率。(2) UI模块:负责有关用户界面的相关逻辑。包括图形和文字的显示,按键和触摸屏的事件处理等功能。(3) 音频播放模块:负责声音或视频的播放,重点是类似流媒体的边下载边播放策略。(4) 数据存储模块:负责应用软件的各种数据的存储,在J2ME的RMS系统之上模拟了一个文件系统来负责相关操作,使得数据存储简单化。(5) 网络通信模块:负责与服务器的通信过程,建立了一套HTTP和SOCKET连接机制。模型模块视图模块RMS常量播放引擎模块系统加载用户登陆主 菜 单节目列表节目分类节目搜索点评推荐播放控制帮助信息网络通信模块服务器端模块服务器接口定义控制器模块流媒体服务器Web Service图3.1 系统架构图该系统架构特点如下:(1) 基于事件驱动。(2) 采用主动模式的MVC,模型被多用户共享,当模型被改变时,模型主动通知其它已实现模型监听器接口的视图进行刷新显示。(3) 控制器模块负责各模块的协调运行。(4) 网络通信模块使用无线网络与服务器进行通信。3.4 软、硬件配置为了能够运行这一软件,手机设备需要满足一定的软硬件配置,如下:(1)MIDP 2.0(2)CLDC 1.0/1.1(3)MMAPI 1.1(MP3 Support),JSR 135(4)Memory heap size800 KB(5)Protocols: http、socket(6)MIME Types: audio/mp3、audio/wav(7)GPRS当前的中、高端手机设备均已达到或超过所列出的配置标准。另外,需要注意的是音频流的下载需要占用较多网络数据流量,为了节省开支以及为了得到更加流畅的播放效果,建议使用带有Wi-Fi功能的手机设备运行该软件,这将能够发挥出该软件的最佳性能。基于J2ME的手机流媒体音频播放器开发系统MVC架构、用户界面与播放引擎的设计与实现第四章系统详细设计4.1 系统MVC框架设计在第二章中,我们已经对MVC模式在J2ME中的应用进行了详细介绍,在本系统中我们采用了单一控制器的MVC模式,即整个程序中使用同一个Controller来控制界面的切换,事件的处理等。在我们的应用程序中,界面的切换是比较常见的操作,利用这种单一控制器的MVC模式,可以很容易地实现界面的切换。4.1.1 MVC框架结构图控制器类UIController是整个框架的中枢,负责协调各视图类和模型的通信,以及控制播放引擎。如图4.1所示。图4.1 系统MVC框架结构图4.1.2 Model层该层主要负责定义系统的数据模型,包括系统启动时加载的数据、运行过程中动态产生的数据和退出系统时保存的数据等数据结构。定义用户登陆信息、节目列表信息、用户偏好设置信息等数据的格式,使用手机上的数据持久化方案记录管理系统(RMS)对这些数据进行管理,实现系统数据的加载和存储功能,实现从Web Service获得所需信息并更新模型中的相关数据,为播放引擎提供节目信息支撑。通常它们维护一个监听器实例的引用,当模型中的数据改变时,就会调用已注册的监听器方法进行界面的更新操作。4.1.3 View层该层主要负责各个用户界面的构建,以及将界面事件处理转发到控制器中进行处理。控制器层会维护所有已知的View,以便在需要时更新对应的视图。系统中主要的视图如图4.2所示。图4.2 系统中主要的视图除了这些主要的视图外,还有用户数据输入界面、警告框、确认框等辅助视图,为了能够方便地进行切换,就需要由Controller层来负责协调。通常它们把控制器类作为参数传递给构造器,并在构造器内部注册监听器,绘制界面等。它们通过commandAction()方法来传递事件编号给控制器类去处理,例如:public void commandAction(Command arg, Displayable arg)if (arg = backCommand)uicontroller.handleEvent(UIController.EventID.mainMenuUI);4.1.4 Controller层应用MVC解决视图切换的关键是提供一个桥梁作用的控制器UIController,它通常要有一个MIDlet作为参数,另外为了能够获取和存储模型中的数据,还需要传入一个Model作为参数。例如:public UIController(StreamMediaMidlet midlet, Model model)this.midlet = midlet;this.model = model;为了传递事件,可以定义一个内部类,在里面定义事件的代号。这样用起来非常的方便。例如:public static class EventIds public static final int BASE_IDX = 0; public static final int START_UI = BASE_IDX+1; public static final int STOP_UI = BASE_IDX+2; public static final int VALIDATE_LOGIN = BASE_IDX+3; public static final int LOADING= BASE_IDX+4; public static final int PLAY_STATION= BASE_IDX+5; public static final int LOA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农产品价格大数据平台创新创业项目商业计划书
- 机器人涂装环保系统创新创业项目商业计划书
- 职位匹配算法创新创业项目商业计划书
- 移动全景广告体验与营销创新创业项目商业计划书
- 河北省金太阳2026届高三上学期9月开学联考(26-09C)数学试题及答案
- 营地建设后勤管理办法
- 贷款资金用途管理办法
- it外包员工管理办法
- 专利设备备案管理办法
- 中心市场商户管理办法
- 电缆安全小知识培训内容课件
- (2025年标准)员工住房安全协议书
- 烟花爆竹理论题目及答案
- 青海省尖扎县2025年上半年公开招聘辅警试题含答案分析
- 2025江苏连云港市东海县开发区实验幼儿园招聘劳动合同制教师12人考试模拟试题及答案解析
- 酒吧mc教学课件
- 永辉超市激励机制案例研究
- 2025浙江温州市公用事业发展集团有限公司面向高校招聘31人(第一批)笔试模拟试题及答案解析
- 色彩的三属性05课件
- 新概念第一册课文讲解
- CMF中国宏观经济专题报告第107期稳定币 货币金融体系演进的新支点
评论
0/150
提交评论