网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > 课程设计 > 正文

基于CDMA手机地址簿开发设计

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
基于CDMA手机地址簿开发设计
目 录
摘要. 3
Abstract 4
前言. 5
1.1 手机软件开发简介. 6
1.2 手机软件开发的特点. 7
1.3手机软件开发平台. 8
1.4本论文开发应用程序简介. 9
第2章 开发环境及开发过程. 10
2.1 开发环境. 10
2.1.1 开发BREW应用程序使用的运行环境介绍. 10
2.1.3  BREW 模块/接口结构. 16
2.2  BREW的优点与局限性. 17
2.2.1 BREW 的优点. 17
2.2.2 BREW的局限性. 17
2.3开发过程. 18
第3章 需求分析. 19
3.1功能概述. 19
3.2需求陈述. 19
3.2.1 用户界面介绍. 19
3.2.2 状态图. 23
3.3 可行性分析. 27
3.3.1 技术可行性. 27
3.3.3 操作可行性. 27
3.4 总体模块划分. 27
第4章 概要设计. 29
4.1 程序的架构. 29
4.2 功能模块划分. 30
4.3模块关系图. 30
4.4 APP层次结构图. 31
4.5 相关时序图. 31
4.6基本类的设计. 37
第5章 详细设计. 41
5.1 控制功能子模块. 41
5.1.1 模块结构体. 41
5.1.2 模块函数. 42
5.2 DB模块. 42
5.2.1 DB模块的概括. 42
5.2.2 DB模块的接口函数. 43
5.3 UI模块. 45
5.3.1 简单介绍. 45
5.3.2 函数列表. 45
5.3.2.1  page1中的函数列表. 45
5.3.2.2 Page2中的函数列表. 47
第6章 编码和测试. 48
6.1 编码. 48
6.2测试. 48
第7章 成果物截图. 50
创新点. 54
总结与体会. 55
谢辞. 56
参考文献. 57
附录. 58     27
 

基于CDMA手机地址簿开发设计
摘要
随着移动电话深入每个人的生活,具有“无线通信、随身携带”特性的移动电话伴随着因特网的发展,使得移动商务前景无限。全球所有的移动运营商都把数据业务看作是部署第三代移动通信的关键。本设计论文是论述一个BREW平台开发运行的手机地址簿程序。
目前,CDMA是移动通信技术的发展方向,基于CDMA手机的开发也将成为一种趋势,此设计就是基于CDMA手机做的地址簿的开发.
本设计论文的结构层次分为七章,分别是:绪论,开发环境及开发过程,需求分析,概要设计,详细设计,编码和测试,成果物截图。其中前两章主要是对开发平台,开发环境的总体介绍,后四章则是根据在设计中的流程来展开论述。最后一章为成果物的截图。此外在论文最后还论述了本次设计的创新点等。
本设计主要实现了以下功能:
1.快速查找功能:主要实现通过输入姓名的一部分来对其进行查找,实现快速查找 的功能。查找成功后可以进入下一界面对该记录进行具体的操作。
2.按姓名查找功能:主要实现通过输入具体的名字来查找到所需要的记录信息,查找成功后可对该记录进行一些具体的操作。
3.添加功能:实现向手机内存中添加新的记录。
4.删除功能:用来删除部分或者全部的记录。
关键词:移动电话; 手机应用软件; 移动通信; 地址簿
 
Summary
With mobile phones in-depth everyone's life, the mobile phone with the functions that wireless-communications, portable develop with the Internet, it makes unlimited prospects for mobile commerce. The mobile data service operators all around world regarded as the key to the deployment of third generation mobile communication. This paper dissertate the cellphone contacts program that platformed in BREW.
    Today, CDMA is the direction for the development of mentmobile communications technology, it will be a trend that based on the development of CDMA cellphone, develop the contacts based on CDMA cellphone in this design.
    The structure of this paper is divided into seven chapters, they are: prolusion, develop condition and develop process, Demand analysis, Summary of the design, detail of the design, code and test, print-screens from the achievement. The frist two chatpters are introduction of the developthe following function:
    1. Quickly search: Search for someone by the part of the name, achieve the function of the quickly-search. It can step to the next interface to operate to the record when it found successfully.
    2. Search by the name: Find wanted record information by typing the full name mainly, and operate when found successfully.
    3. Add: Add the new record to the RAM of the cellphone.
    4. Delete: Delete the all or part of the records.
Keyword: Mobile phone, cellphone applications, mobile communications, contacts
前言
随着移动通信技术从2G向2.5G的过渡和3G时代的到来,当今移动通信设备的功能日益强大,集成摄像头、彩信、娱乐、游戏于一体的手机已经成为国际市场上的主流产品,应用领域已经从单纯的电话业务扩展到视频和音频(AV)、位置相关的服务(GPS)、语音识别、移动电子商务和安全技术等功能。从国际移动通信技术、市场发展趋势来看,无线通信设备、消费类电子设备,例如手机,越来越明显地体现出计算技术与通信技术融合的趋势,手机市场不断向数据化、智能化方面发展,业界形象地把这种下一代手机称之为“智能手机”。
在这种情况下CDMA手机产生了一种新的应用平台,也就是由美国高通公司研发出的BREW(Binary Runtime Enviroment for Wireless)平台。BREW技术的出现使手机犹如普通电脑一样能够运行更多的第三方软件,为用户提供更多的服务。此次课题主要围绕着BREW技术进行研究。
随着国内外相关技术的发展及其强大的市场需求,手机嵌入式软件的开发也日趋完善,在前人总结的大量经验基础上进行进一步的研究和动手实践无疑是一项有实践意义的研究方向。
 

基于CDMA手机地址簿开发设计
第1章 绪论
1.1手机软件开发简介
今天的移动通信用户都希望手中的移动设备能具备更多的功能。无论是高端集成式个人移动数字助理(PDA),还是以低成本和易操作为主要特色的大众化手机都是如此。目前人们正在积极研究利用高速 ASIC 技术为移动设备甚至为低成本设备添加新功能,如果这些功能需要集成高端操作系统来实现,考虑到相关的成本和体积因素,问题即变得复杂化、众大化。设备一般只提供支持特有服务组和接口的专有解决方案。尽管多数会共享一个底层环境,但 ASIC 上的专有层妨碍了常规应用程序的开发无法供设备厂商的产品使用。
随着移动通信技术从2G向2.5G的过渡和3G时代的到来,当今移动通信设备的功能日益强大,集成摄像头、彩信、娱乐、游戏于一体的手机已经成为国际市场上的主流产品,应用领域已经从单纯的电话业务扩展到视频和音频(AV)、位置相关的服务(GPS)、语音识别、移动电子商务和安全技术等功能。从国际移动通信技术、市场发展趋势来看,无线通信设备、消费类电子设备,如Smart Phone、手机等,越来越明显地体现出计算技术与通信技术融合的趋势,手机市场不断向数据化、智能化方面发展,集成MMS、JAVA、PDA、BREW摄像等功能的彩屏手机越来越成为移动通信高端产品的象征,特别是突出了信息处理、网络应用和多媒体应用等方面性能的手机成为厂商产品规划的重要方向。
正由于信息技术的发展带动了移动商务的迅速成长,全球很多的移动运营商都把像BREW程序这样的数据业务看作是部署第三代移动通信的关键,特别是在CDMA网络中。可以看到BREW(Binary Runtime Environment for Wireless无线二进制运行环境)将在移动互联网甚至移动商务中扮演重要角色,用BREW开发的应用软件也越来越多。
QUALCOMM 依靠在 ASIC移动设备和桌面应用领域的成熟经验开发了 BREW 这套解决方案。BREW 的任务是提供一个有效低成本可扩展和人们熟悉的 AEE,着重开发可无缝植入任何实际手持设备的应用程序。BREW 可以在现有的设备类型上运行,这一点与构建在对内存处理器速度和相关硬件有较高要求的操作系统上的高端产品不同。使用 BREW应用程序,开发者甚至可以扩展低成本设备的功能。本设计论文正是论述一个用BREW平台开发运行的地址簿和处理程序。
BREW提供一个高效率、低成本的、可扩展的应用程序执行环境(AEE),专门为开发可无缝植入任何手持设备的应用程序而定制。BREW作为软件接口层,位于无线设备的芯片和应用程序之间,是最终用户可以无线下载程序并在支持BREW的设备上运行。开发者不必关心低级平台数据结构和设备驱动程序,应用程序和设备平台可以完全通过适当定义的类进行交互 。
日本和韩国有很多家电信运营商正在进行3G网络的运行。这些国家的电信运营商都提供了BREW的增值业务,并且从目前的统计数字来看经营状况非常良好。这一方面大大的刺激了BREW程序的开发。在国内中国第二大电信运营商-联通公司,在其CDMA网络中就搭建了BREW增值业务-神奇宝典,提供了许多CDMA手机中的BREW应用程序的下载业务。
1.2 手机软件开发的特点
运行于手持设备之上的应用程序,手机的硬件特征决定了手机软件的特点
处理竟合:当需要接听或者拨打电话时,通常会中断进行中的程序,程序必须能够暂停和继续,既不能造成程序出问题也不可以造成内存的溢出。
分辨率:手机的分辨率大小各有不同,分辨率的不同直接影响到程序中的造型的尺寸及表现力,因此在设计之初就要考虑屏幕的自适应问题。
色彩数量:目前手机所能提供的色彩数量也是阻碍美工人员发挥的一个重要瓶颈。
亮度:由于独特的发光原理,液晶屏幕无法达到传统显示器的亮度,这样就导致很多图案在强光下不能显示出原有的效果,因此在设计图片时一定要考虑到这一点,不能将色彩对比度设置得过低,另外图片设计一定要简洁明快,避免过小的图片。
显示速度:在常使用的手机中,很多由于芯片的速度太低,导致画面不够流畅,通常采取局部刷屏或者避免全屏显示动画的方法来尽量达到预期效果。
电力: 手机配备的是液晶屏幕,高亮度的像素显示会比一般的像素耗电量大。
应用程序大小限制:大部分手机只有很小的内存供应用程序使用,还有来自运营商的限制。
有限的声音支持:手机上支持的音效主要决定因素是频响、带宽、和炫和功率。
1.3手机软件开发平台
在这个处处强调创意的时代,手机就是我们握在手中的个性。手机的功能越来越多,只有凭借精彩的手机软件才能“秀”出这些创意。那么,手机软件究竟包含哪些内容?又有哪些应用呢?
手机软件都有一个特点,就是软件固化在硬件中,软件代码必须保证高质量、高可靠性和实时性,一般包含三个层次:第一层次是Operating System(OS,操作系统),主要与RF(射频信号)芯片进行沟通与指令处理,它基于一些基础的网络协议(如GSM、GPRS或CDMA、W-CDMA)等;第二层次是内置的手机本地应用,例如电话簿、短信息等内容,更为重要的是,在一些手机上已经集成了开发平台,它可以运行第三方开发的应用程序;第三层次是在平台上开发的一些应用程序(如各种游戏、图片浏览等),还有一些API的接口函数,可以同外部的PC通过线缆进行数据传送,也可以通过无线方式与外界应用服务提供商传递数据。
下面把手机软件开发环境简单介绍一下:
1、 厂商固化程序
在手机出厂以前,厂商会开发一些特定的应用,并将这些应用固化到手机中。
这个环境只有在手机厂商的研发中心才可以用到,不够通用。
2、 J2ME技术
当今手机软件开发的主要方向之一,比较通用,使用Java语言,具备Java的优势,支持的厂商众多,比如Nokia、Siemens、Motorola等等。
SUN公司提供了通用的开发工具J2ME Wireless Toolkit,各厂商也有自己的扩展SDK。
3、 BREW技术
高通公司的CDMA体系下的一种开发技术,使用C进行开发,SDK可以和VC等IDE集成。现在联通的高端手机支持该功能。
4、 Symbian平台开发
Symbian是高端手机中运行的操作系统,提供C++和J2ME的SDK。Nokia的高端机器大部分使用该操作系统。
5、 Windows Mobile平台开发
国内多普达的机器大部分采用该平台,可以使用VB、C++和.net的技术进行开发。
6、 嵌入式Linux平台开发
1.4本论文开发应用程序简介
地址簿,属文件处理的范畴,主要对文件或数据库中的数据进行查找、添加、
删除、编辑等操作。
本次开发的“地址簿”系统是利用QUALCOMM(高通)公司提供的架构(BREW SDK)作为软件开发包,开发出基于BREW技术的文件处理系统。系统主要任务是能够在手机BREW平台上运行,对手机中的地址数据信息进行处理。如:查找,添加,删除,编辑等。本系统将充分利用BREW SDK包提供的接口并结合C语言在嵌入式系统中特殊运用的特点进行开发。在开发中主要是运用SDK提供的手机模拟器进行调试和运行,当系统开发完毕后将植入到CDMA手机中进行测试。
 

基于CDMA手机地址录开发设计
第2章开发环境及开发过程
    在第1章中,我们已经对BREW有了宏观的了解,接下来将具体介绍和研究BREW的运行环境,构建,开发过程等与本次设计密切相关的技术问题。
2.1 开发环境
2.1.1 开发BREW应用程序使用的运行环境介绍
BREW 的全称是无线二进制运行环境(Binary Runtime Environment for Wirelsee)。从基本的层面而言,BREW 平台就是手持设备上嵌入式芯片操作系统的接口或抽象层。您可以将它看作是 PC 环境下 Microsoft Windows 的 Win32 API。BREW 平台是一组用于本地执行而编译并链接的二进制库,优化后能使应用程序利用无线服务和资源。它控制流出或流入应用程序的事件流,能根据相应的事件启动、停止、中止或恢复应用程序。BREW 执行环境在运行时可以发现应用程序和任何相关的扩展。
BREW 平台是无线应用程序开发、设备配置、应用程序分发以及计费和支付的完整端到端解决方案的一部分。BREW 解决方案包括以下组件:面向设备制造商的 BREW 应用程序平台和移植工具;面向应用程序开发者的 BREW 软件开发包 (SDK);由网络运营商管理和控制的 BREW 分发系统 (BDS),利用该分发系统,运营商可以轻松地将开发者开发的应用程序投入市场并协调计费和支付过程。
BREW 是一个位于嵌入式芯片操作系统之上的抽象层,它能够提供对一些低级功能、环境变量和子程序的访问功能。它不是 VM,因为它并不充当解释器,而 Java VM 在运行时会解释编译的 Java 程序类文件的字节码。
另一方面,BREW 类似于使用 C 语言的嵌入式开发。与 J2ME 不同的是,开发者可以编写 C 代码,该代码将直接为高度受约束环境中的 ARM 处理器进行编译。这样可使 BREW 编译代码在大小和执行上均更为有效。开发者可以在 BREW 中编写小于 50KB 的全功能邮件客户端程序。BREW 还允许访问将应用程序与 TAPI 接口集成之类的系统级功能。例如,用户可以从 BREW 应用程序内部进行语音呼叫。在 J2ME 环境下这是不可能实现的。
BREW的应用执行环境(AEE)是一个精巧的软件接口层。设备厂商将它集成在各自的软件中,以支持BREW API和运行环境。在一个新终端设备中提供AEE要求设备厂商只要移植AEE即可,此外, BREW Emulator中提供了一个AEE的Windows端口,所以BREW Emulator可以运行针对Windows的小程序。由于AEE占用的随机存储器和闪存极小,BREW不但可以使高档机型锦上添花,而且在低端主流机型中也能大显身手。
BREW 提供的功能丰富轻松运行的环境使应用程序开发者能够利用 QUALCOMM 移动基站调制解调器 (MSM) ASIC 所提供的现有和新增的功能BREW 可充分扩展的面向对象的应用程序执行环境允许使用 C 或 C++ 开发小程序和共享模块此外BREW 的设计还关注效率和节约移动设备的 RAM
BREW 支持应用程序小程序和共享模块小程序和模块开发成独立的 DLL并在运行时加载到 Emulator共享模块可提供各种功能如可供若干小程序使用的增强型游戏 API,BREW 小程序和模块在 Windows 的模拟环境下开发为帮助您入门QUALCOMM 提供了许多示例应用程序BREW 示例应用程序部分详细说明了其中一种应用程序。
除了向应用提供BREW API服务,AEE同时管理着应用程序的执行,及时响应用户和一些紧急事件,如来电和短信呼入。比如说,一个正在运行的BREW应用当有来电呼入时,可以自动立即暂停;并在通话完毕之后,再自动恢复工作。
BREW 提供了一套完善的对象技术,使开发者可以非常方便开发基于图形的应用服务:
①应用程序服务,支持简单的、基于事件的AEE。
②内核服务支持,对文件、网络服务、内存和屏幕的访问。
③增强型服务,例如增强图像性能(互动的游戏)、声音播放器(优质的音乐)、GPS 和语音服务。
④综合服务,使应用程序开发者可以利用诸如浏览器、Outlook所支持的服务。
从运行环境和效率上看,BREW提供以下支持:
①BREW可有效地利用RAM 和持久存储器。BREW 可以在需要时加载或卸载使用的对象或内存。
②BREW应用程序环境支持人们熟悉的与Microsoft Windows、 Macintosh 或UNIX X-Windows 类似的事件驱动结构。
③本地化BREW小程序非常方便。
④所有文本按Unicode 处理,并以所选语言可支持的最有效的方式储存。BREW 还支持OEM的本地文本格式。
⑤业务模块可以在对象代码级集成,便于设备开发商和第三方生产商为BREW 平台添加应用模块。
⑥BREW提供了内核类可与设备平台进行对接。
在应用开发上,BREW为各种手持设备快速、高效、经济地开发和配置新的应用程序提供了方便,BREW SDK开发包提供基于C/C++、Java等编译环境的运行库和面向对象的类结构,包含了各种有效的系统调用、用户接口、多媒体集成和网络套接字等类对象资源,开发者对BREW的开发就好像在Windows平台上编程,有种类繁多、功能强大的库函数调用一样,开发者不必关心低级平台数据结构和设备驱动程序,因为应用程序和设备平台可以完全通过适当定义的类对象进行交互。而且,它还支持在程序中直接使用字符串、图片、声间、对话框等自定义资源,从而达到交互、生动的效果。
下面介绍一下BREW的AEE 技术 BREW构建于手机的基础平台之上,为应用程序的开发提供了一致的称为AEE的程序运行环境,AEE是Application Execution Environment的缩写。图 1-1描述了AEE的体系结构:若图片无法显示请联系QQ3710167                           图 1-1
AEE环境的基本组织单位是Module(模块),Module是BREW应用程序开发和部署的基本单位,在Module中可以包含两种元素,即:Applet(小程序)和Class(类) 。
Applet:BREW应用的基本执行单位,因为BREW是单线程的,所以不论一个Module里有多少个Applet,同一时刻只有一个Applet被激活.一个Applet可以被另一个Applet启动,但在这种情况下,当前的Applet被暂停,切换到另一个Applet。
Class:这里的Class(类)和面向对象开发语言(如:JAVA,C++)中的有一定区别,AEE中的Class是BREW可以复用的基本单位,而且Class的复用范围并不局限于其所在的Module,而是整个AEE环境,也就是说,一个Module可以使用其他Module中的Class.Class的访问点(即一组完成特定功能的API)被成为Interface(接口).首先BREW所有的API都可以以Class的形式来组织,提供了二十多个包括 显示,文件操作,地址薄的访问等功能的Interface;同时,BREW允许应用开发者(按照特定的格式)编写自己的Class。
2.1.2    BREW SDK的组件
BREW AEE:AEE 是一个可充分扩展的面向对象的应用程序开发和执行环境
该环境提供了一个使用 C 或 C++ 开发小程序和共享模块的平台,是一个人们熟悉的能增强可用性的事件驱动结构。
Emulator  :BREW Emulator是加载并测试小程序的前端图形用户界面 (GUI)它提供了若干预置的设备模拟方案也可以使用 Configurator 创建自己的设备模拟方案。
Device Configurator: Device Configurator用于生成新的设备或编辑现有的配置在配置如键盘按键及其功能屏幕尺寸及分辨率和内存大小时将会很有用。
资源编辑器 :BREW Resource Editor用于创建资源。
MIF 编辑器 :BREW MIF Editor用于生成模块信息 (MIF)其中包含加载小程序所需的模块和小程序的特定信息。
BREW DLL:BREW 中包含若干动态链接库 (DLL)它们可以在 Microsoft 环境下显露内核支持的 BREW 类因为 DLL 使用的代码与为 BREW代码相同,所以应用程序在基于 Windows 的 BREW Emulator 及实际设备中的行为没有什么不同。
Win-OEM: Win-OEM 用于提供在 Windows 平台上模拟设备行为所需的
BREW 头文件。BREW 头文件包含 BREW 接口定义并用于开发小程序,每个 BREW程序都有一个关联的头文件,每个小程序中都必须包含该小程序所使头文件。
Visual Studio 插件:Microsoft Visual Studio 的免费插件。
BREW 实用程序:BREW SDK 中的实用程序可以为 BREW 应用程序提供额外功能。
下图显示了 BREW SDK 的主要组件(MIF 编辑器、资源编辑器、C++ IDE 和使用设备信息包的Simulator)以及它们之间的交互关系。若图片无法显示请联系QQ3710167
 

基于CDMA手机地址簿开发设计
2.1.3  BREW 模块/接口结构
BREW AEE 提供了多种类型服务,包括若干 AEE 接口如 IShellIDisplay 和 IMenuCtl。每个接口都封装了一组资源和允许管理这些资源的方法有关每种接口函数的详细说明可参阅 BREW API 参考资料。BREW 模块可以包含一个或多个小程序或类,模块在运行时显示这些类并根据需要加载或卸载。
每种接口都由一个 32 位的接口 ID 标识。公共接口必须通过 QUALCOMM BREW 接口注册。限制接口 ID 的分配是为 BREW 开发者提供的服务可避免接口 ID 发生冲突。
下图说明了在支持小程序和模块方面BREW 如何提供一个薄层以支持对 OEM 和 ASIC 软件的访问。若图片无法显示请联系QQ3710167
2.2  BREW的优点与局限性
2.2.1 BREW 的优点
BREW AEE 具有以下优点:
(1) BREW可以有效地利用RAM和持久存储器其使用的对象仅在必要时加/卸载 。
(2) BREW应用程序环境支持人们熟悉的类似于Microsoft Windows Macintosh或UNIX X Windows的事件驱动结构。
(3) BREW小程序可供各国地区本地化。所有文本以 Unicode 管理并以所选语言支持的最有效的方式保存BREW,还支持特定 OEM 的本地文本格式。开发者不必关心低级平台数据结构和设备驱动程序因为应用程序和设备平台可以完全通过适当定义的类进行交互。模块可以独立和同时开发能够最大限度地缩短开发时间减少复杂的集成问题。模块可以在对象代码级别集成能够简化向 BREW 平台添加模块的任务。
(4) BREW支持接收定向到应用程序的短消息服务消息例如股票行情简短电子邮件或交通更新信息。
(5) BREW提供了内核类可与设备平台进行对接小程序使用这些类来管理
和控制的设备资源。
2.2.2 BREW的局限性
(1) 缺乏可移植性。由于J2ME同Java一脉相承,因此使开发商写一次代码能在范围广泛的不同设备上运行,又由于Java语言在开发人群中的广泛普及,其也已拥有庞大的程序开发队伍。反观BREW,同J2ME适用于通用消费和嵌入式设备等不同,BREW专门针对无线设备尤其是CDMA手机定制,它在手机中更适用,但同时也缺乏可移植性。BREW比J2EE更加接近底层,而且J2EE的功能块封装做得很好。这给BREW的开发带来了一定的困难。
(2) 内存的使用空间小。从开发人员所使用的语言来看,由于BREW基于C/C++,无疑开发难度大大高于更易上手的Java,而且,BREW缺乏像Java语言这么强大而专门的开发工具,这显然制约了其开发速度,而且,在手机这样低内存设备上,Java的无用内存收集机理非常有效,而BREW有时却面临严重的内存问题。
(3) 另外如今支持BREW的硬件除了高通外还很少。
以上本章粗略阐述了Brew平台开发的基础知识,本论文就是在这些基本理论的指导下,遵循软件工程的思想,从需求分析,基本设计,详细设计,到编码和测试,以C为编程语言,以Microsoft Visual Studio 6.0为开发环境,有计划的完成了基于Brew平台上的地址簿的开发。
2.3开发过程
本次开发以虚拟项目的方式进行,从前到后完全按照软件工程的思想开发,并且每一过程中都有详细的文档记录成果。每周有例会和周报,不断地进行项目的总结和进度的追踪。在这一过程中,系统地学习了UML和面向对象的编程,更熟练了对C/C++的运用。更重要的是通过虚拟项目的形式,真正深入理解了软件工程的思想和现实意义。下图详细的说明了本次开发的过程。若图片无法显示请联系QQ3710167
第3章需求分析
3.1功能概述
本地址簿主要包含四种功能:
1.快速查找功能:用户可以根据所要查找的姓名依次键入字母来查找,在查找的过程中页面始终处于显示用户所有记录的画面,此画面是按照姓名首字母的先后顺序来排列的。光标会根据用户所键入的字母而停留在相应的位置,不断地翻阅电话本,以达到快速查找的功能。
2.姓名查找功能:用户可以通过直接键入姓名来查找所要的信息,在查找时,如果输入姓名的一部分,则会显示由所键入的内容开头的所有姓名,然后再进行选择。如果输入全名,则光标会直接跳到电话本中该姓名的位置。点击“OK”便可进入对该记录操作的页面,如:对该号码进行呼叫,查看详细信息,删除,编辑等操作,若不存在,则返回与该号码最接近的条目。
3.添加功能:每条选项包括:姓名、号码、分组等等可以向数据文件中添加记录的信息,创建新记录。
4.删除功能:对选定的记录进行删除,也可以用全部删除来删除所有记录。
3.2需求陈述
PC机一台
手机一部
3.2.1 用户界面介绍
1.page1:启动地址簿时,出现的主界面为此界面。在该界面上显示四条功能条目,如图示,实现快速查找,按姓名查找,添加,删除全部的功能。
 

基于CDMA手机地址录开发设计
3.3 可行性分析
3.3.1 技术可行性
   BREW系统是对无线设备开放,标准的并可扩展的应用程序执行平台,尤其是一些其自身的特点,如:BREW体积很小,执行速度很快,它除了支持C/C++以外,也支持其他运行环境,因此用此平台开发的应用程序不但可以保证执行的速度,于此同时BREW的性价比较高且平台容易扩展。虽然目前市场上有关BREW的相关书籍比较少,但高通公司在BREW方面提供了强大的文档支持,包括BREW API参考资料,BREW程序设计概念等,对开发此系统提供了强大的技术支持。但是就目前开发的地址簿而言,需要对文件库进行快速查找,姓名查找,删除选中记录等一些技术,BREW并没有提供现成的接口可以使用,因此需要对这些技术进行验证分析。
3.3.2 经济可行性
BREW使开发商、开发者、运营商和手持设备制造商只需投入少量资金,便可开发和提供新的无线数据产品和服务。并且BREW进入的门槛很低,潜在的风险也很低,因为BREW站的基础在于以最简洁方便的方法来达到目标。为此在BREW平台上设计的地址簿同样具有上述特性。
3.3.3 操作可行性
此地址簿的开发是在分析目前市场上手机地址簿缺点与不足而开发的应用程序,从用户角度来看,其操作简单、实用、通用性较强。
3.4 总体模块划分
    该软件初步分为三个模块:架构,描绘和机能。架构模块负责把整个工程的框架写出来,为其他两个模块作好基础。描绘模块负责把各个页面严格根据客户要求描画出来,并作好与机能模块之间UI的连接,及各个页面间的跳转。机能模块负责数据存取和数据操作!实现一些BREW不提供的接口,主要负责完成文件管理模块部分。例如:实现FastSearch,NameSearch,Delete等,以达到在使用时可以直接调用。
说明:我在此次设计中负责page1和page2的描画。
第4章概要设计
4.1 程序的架构
好的程序架构对于程序的可读性,可扩展性和实用性起着不可估量的作用,本程序采用三层应用架构,如图所示:
若图片无法显示请联系QQ3710167
图4.1程序架构
所谓表现层就是指地址簿的屏幕绘制操作。逻辑层表现的就是有关addressbook的逻辑处理,比如说处理用户的按键事件,处理系统的消息等。而数据持久层表现的就是addressbook中数据的存储和读取。采用分层结构使程序层次清晰,架构划分简单,撰写方便,同时便于扩展,模块独立性,以及各自代码的同时进行!
表现层与程序的逻辑层分开,并且使用数据持久层来进行数据的存储。逻辑层对表现层暴露接口。
 
4.2 功能模块划分
为了清晰创建addressbook程序,我们根据addressbook的架构图,将addressbook分为四个大的功能模块,详细表示如下表:





 模块

功能


描绘

负责把各个页面严格根据客户要求描画出来,并作好与机能模块之间UI的连接,及各个页面间的跳转


逻辑处理

处理逻辑判断,逻辑关系和一些特殊的事件等。


DB相关

负责数据存取和数据操作!


External Dependencies

一些相关扩展
 
4.3模块关系图
 若图片无法显示请联系QQ3710167
用户通过界面显示可进行一些逻辑处理,如用户的按键事件,同时处理后的结果又通过界面传达给用户。
逻辑处理有关addressbook的逻辑处理,比如说处理用户的按键事件,处理系统的消息等,也包含了对数据的操作和处理,与DB的交互。在界面显示下也可能调用DB的数据。
4.4 APP层次结构图
     根据需求陈述设计如下APP结构层次图:若图片无法显示请联系QQ3710167
在待机App中启动App,App可以启动详细表示App、功能App、主页面App,详细表示App都是App的子App,在功能App中可以进行查找、删除、编辑和退出的操作,其中只有退出App不进行DB的访问。
(虽然功能菜单是从主页面界面进入的,但是他们是同一级的App,都是在App中进行调用然后显示在屏幕上的)
4.5 相关时序图
1.程序启动,进入主页面page1的时序图若图片无法显示请联系QQ3710167
 

基于CDMA手机地址录开发设计
2.退出整个addressbook的时序图
  若图片无法显示请联系QQ3710167
3.Page1 跳转到page2的时序图:即为从主页面选择FastSearch时打开page2的时序图

4.Page1时序图:即为page1的内部函数调用关系图

 
5.page2的时序图:即为page2的内部函数调用关系图

 
4.6基本类的设计
1.此类用于对当前页面,状态的处理,作为状态的管理者,使用堆栈来保存当前活动的页面,当有新事件来临时,取得当前活动的页面,并调用基类Page的事件处理函数来处理事件。打开新页面时,根据出入的nPageID和eOpenMode来判断打开的页面,并且页面时否需要关掉当前的页面。其中E_OPEN_OPEN,将新页面压栈;E_CLOSE_OPEN,关闭当前页面,将新创建页面压栈,作为栈顶。调用Page的Draw函数将新页面显示出来。

2.此类作为公共的基类,所有的页面都将定义一个Page的实例,把各个页面的相应绘制函数,时间处理函数,释放函数的指针登记到Page实例的中相应的位置。在调用时,就实现了多态。使得各个页面各不相关。

3.此类包括了Brew中的一些Applet

4. 此类为数据处理页面,主要实现对存储的记录内容进行读取,在内存中排序,提供读取某条记录,删除某条记录,修改某条记录,删除所有记录的接口。其中记录存储前,在文件中存储300个标志位,用于判断该标志位所对应的记录是否存在。文件读取时,根据标志位来读取相应记录的姓名,然后在内存中进行排序,当需要查看某条记录的详细信息时,才从文件中读取相应记录的详细内容。

5.此类为正常进入地址簿的主页面若图片无法显示请联系QQ3710167
6.此类为快速查找页面。

说明:由于在这次设计中我负责page1和page2的描绘部分,所以以上基本类的设计我只列举了一些公共类和类page1、类page2.
设计中其他类的基本设计下面做简要的介绍:Page3为按姓名查找页面的输入页面; Page4为记录的添加页面; Page5是否全部删除提示页面; Page6为添加和修改记录时,姓名为空的警告页面; Page7为单条选中记录的操作页面; Page8为选中记录的详细信息显示页面; Page9为全部记录删除成功界面; Page10为选中记录的编辑页面; Page11为操作成功界面; Page12为操作失败界面。
当全部删除成功时调用Page9,删除失败时调用Page12。添加,编辑和删除记录成功时调用Page11,添加,编辑和删除失败时,调用Page12页面。Page9,Page11,Page12页面在调用后800毫秒后根据所注册的一个Timer机制关闭自己。
 

基于CDMA手机地址簿开发设计
第5章 详细设计
本应用程序中主要由控制架构模块,DB模块,UI模块及其外部扩展模块。其中UI模块总的来看包括查找子模块,详细表示功能子模块,添加功能子模块,
修改功能子模块,删除功能子模块。
5.1 控制功能子模块
通过ApiPage.h和Page.c作为公共的基类,所有的页面都将定义一个Page的实例,把各个页面的相应绘制函数,时间处理函数,释放函数的指针登记到Page实例的中相应的位置。在调用时,就实现了多态。使得各个页面各不相关.。
从而达到控制其他页面的功能。注意:程序从AddressBook.c进入主页面page1,然后再通过ApiPage.h和Page.c来调用其他所有的页面。
5.1.1 模块结构体
在这个模块中有一个结构体AddressBook
结构体定义如下:
typedef struct _AddressBook {
 AEEApplet        a ;     
   ;
    ST_UISTATEMGR *m_pstUIStateMgr;
} AddressBook;
其中的结构体ST_UISTATEMGR定义如下:
typedef struct _ST_UISTATEMGR
{
IShell                  *m_pIShell;
         m_nSelItemID;
File       m_File;
#ifdef __DEBUG
IBitmap              *m_pIBitmap;
    *m_bufferControl[3];
#endif
}ST_UISTATEMGR;
在上面的结构体中包含了两个重要的结构体变量:结构体m_File,用来进行DB处理,结构体*m_pstPageStack[ VP_PAGESTACK_SIZE ]用来记录打开的页面,便于显示各页面,记录光标位置。
5.1.2 模块函数
控制模块的主要函数列表:





No.

函数名称

函数处理及说明


1

AEECLsCreateInstance

启动应用程序(函数入口)


2

AddressBook_InitAppData

初始化应用程序数据


3

AddressBook_FreeAppData

释放资源空间,退出整个程序


4

ApiPage_Draw

用来调用各个页面的draw函数


5

ApiPage_Release

释放资源页面资源
5.2  DB模块
5.2.1 DB模块的概括
DB模块是AddressBook应用程序中最重要的部分。此部分的设计会直接影响到整个应用程序其他部分的实现与设计。一般而言手机中的AddressBook所容纳的记录条数不是很多,大多数都在300条左右,在此次设计中我们就将记录数设置为最多300条,整个AddressBook的记录信息一般不会很大,相对于手机中的几十兆甚至几百兆的存储空间来说是微不足道的。所以本应用程序的DB模块设计成数据库文件的大小是固定的,不随数据的的多少而变化。
本应用程序的DB模块是通过BREW平台下的文件接口实现的。DB模块是一个文件,这个文件分为两部分:标志区和数据区,标志区记录了相应数据区的数据是否有效,1表示有效,0表示无效,此数据文件具体结构如下;
若图片无法显示请联系QQ3710167
5.2.2 DB模块的接口函数
1、通过IFileMgr接口实现文件的创建,删除和出错处理。
2、文件读写操作。
   IFILE_Seek  ( )           将文件操作位置定位
      IFILE_Read  ( )        从打开的文件中读取指定数量的字节
      IFILE_Write  ( )         将指定数量的字节写入打开的文件
3、索引操作
struct Index
{
AECHAR   Name[NAME_LEN];
Int      position;
}
在程序启动时把所有记录的Index创建起来以便索引。
Index是动态分配空间。
Index排序用指针排序,提高速度,降低开销。
4、姓名查找和快速查找都使用二分查找,提高速度,没有完全匹配的条目时则返回最相近的条目。
5、添加时,从标志区找到标志位是0的,将新纪录添加到该标志位对应的位置。
6、删除时将条目相应的标志位置0。
7、编辑时先将该条记录读出来,然后保存编辑后的内容。
此模块中主要的函数列表:





NO

函数名称

函数处理及说明


1

CreateFile

判断文件是否存在,若存在则打开此文件,若不存在则创建并打开文件


2

ReadFile

从文件缓存中读取所有的记录


3

AddRecord

向文件中添加记录


4

EditRecord

修改记录并读取修改后的信息


5

SaveRecord

修改或添加之后保存


6

DeleteRecord

从文件中删除一条记录


7

DeleteAll

删除文件所有的记录


8

FileRelease

释放文件指针


9

FastSearch

快速查找
 
 
5.3   UI模块
5.3.1 简单介绍
此模块中不仅要显示UI界面,而且有些模块还需调用DB模块中的接口函数。如:查找子模块,添加功能子模块,修改功能子模块。对应用到的DB中的接口函数在上节中都有介绍,这里不做介绍。
下面就我负责的描绘部分(page1和page2)做简单的介绍
    首先对于在这次设计中的描绘,回调是重点,我用了回调机制来画菜单。
回调在BREW中是一个很重要的机制。用它使某些操作变得方便简单。
如画菜单的时候,用回调可以对菜单进行详细设定,例如:标题的高度,宽度,菜单项的高度,宽度等,而这些在BREW中的IMENUCTL接口中是固定不能设置的。   
    其次在page2快速查找页面中,不仅要求将文件中的记录全部显示出来,而且要做到快速查找的效果,即输入文本框中要找的记录的名字的一部分,光标会落在相应的记录上。后者前面已经介绍过,所以这里着重要讲的是前者即:如何把所有的记录全部显示出来。
5.3.2 函数列表
5.3.2.1  page1中的函数列表
 
 





NO

函数名称

函数处理及说明


1

Page1_Draw

page1被创建时,该函数调用page1的描绘函数来把该页面画出来


2

Page1_DrawMenuCB

自己写的回调函数


3

Page1_HandleEvent

Page1的事件处理


4

Page1_Release

释放page1的所有资源


5

Page1_HandleEvtKey

用来处理Key事件


6

Page1_HandleEvtKey1

处理Key1事件,按下1键时跳到第一个菜单项页面即FastSearch页面


7

Page1_HandleEvtKey2

处理Key2事件,按下2键时跳到第二个菜单项页面即NameSearch页面


8

Page1_HandleEvtKey3

处理Key3事件,按下3键时跳到第三个菜单项对应的页面即:Add页面


9

Page1_HandleEvtKey4

处理Key4事件,按下4键时跳到第四个菜单项对应的页面即Delete All页面


10

Page1_HandleEvtClr

处理Clr事件,按下Clr键时退出该页面或清楚文本框中已输入的文字


11

Page1_HandleEvtSoft1

处理Soft1事件,按下Soft1键,会进入光标所在位置对应的页面


12

Page1_HandleEvtSoft2

处理Soft2事件,按下Soft2键,会返回到上一页


13

Page1_HandleEvtSelect

处理OK键事件,按下OK键则进入光标所在位置对应的页面


14

Page1_DrawMenu

通过调用Page1_AddItem回调函数来画该页的菜单


15

Page1_HandleEvtUP

UP键处理,当按下UP键时,光标上移,当移到第一个菜单项时,继续按UP键,则光标跳到最后一项


16

Page1_HandleEvtDOWN

DOWN键处理,当按下DOWN键时,光标下移,当移到最后一项时,继续按此键,则光标跳到第一项


17

Page1_AddItem

通过调用回调函数画菜单项


18

Page1_Redraw

被回调函数调用画菜单项,此函数主要是设置光标的大小,及显示资源
说明:回调函数Page1_DrawMenuCB是自己写的函数,在Page1_Draw函数中注册为回调函数,再画菜单时就直接有系统自己来调用该函数,来完成该页的菜单的描绘。
5.3.2.2   Page2中的函数列表
在此页面中也用了回调来画菜单,具体的与Page1类似,这里不再列举,
此外 Page2_Draw、Page2_HandleEvent、Page2_Release、Page2_HandleEvtKey、
Page2_HandleEvtKeyClr、Page2_HandleEvtKeySOFT1、Page2_HandleEvtKeySOFT2
Page2_HandleEvtKeySelect、Page2_HandleEvtDOWN、Page2_HandleEvtKeyUP
Page2_DrawCB、Page2_Redraw以上这些函数与Page1中的类似,这里也不再做说明。
下面介绍如何显示记录列表:
实现显示所有记录功能的两个核心函数:
  static void Page2_NameList(ST_PAGE2  *pstPage)
   static void Page2_AddItem(ST_PAGE2 *pstPage, int itemID)
Page2_NameList()可以通过调用Page2_AddItem()显示所有的记录姓名条目。
其中关键的是通过传递存记录的在缓存Buffer[]的下标,从而把其中的记录取出来,显示在屏幕上。
 

基于CDMA手机地址录开发设计
第6章编码和测试
6.1 编码
   在前面几章中已经介绍了各个页面的跳转关系,各个类的详细设计及一些函数端口等,这里对具体的编码不作具体的介绍.关于我自己编写的page1和page2的代码将放在附录部分.
在此次设计中编码用的时间很短,我们只用了一个礼拜的时间,就完成了8000多行的代码编码,实现了基本功能。以前从来没想过会用这么短的时间来进行编码完成一项工程。
通过这次毕业设计我充分体会到前期工作即:需求分析,概要设计,详细设计的重要性。这些工作做的越好,编码会越快。
同时也使我转变了思想,就是以前我一直觉得编码应该是一项软件设计的重点,其实不然,编码只是其中的一小部分,重要的是前期工作,前期准备工作越充分,后面的编码工作便会越简单。
6.2测试
此次设计编码阶段结束后便进入了测试阶段,测试对于一项软件工程至关重要。我们小组经过讨论,分了两名同事来进行专门的测试工作,然后把出现的BUG整理成一个文档,发给小组的其他成员。然后由小组其他成员针对自己做的模块来对BUG进行调试。
由于我没有负责测试部分,所以这里对测试用例等一些具体的测试工作没有作详细的介绍。只对测试中发现的问题作简单的介绍。
在测试中发现的最难解决的也是最重要的BUG是内存泄漏。
内存泄漏即:对于申请的内存资源没有及时地释放掉,以致于浪费内存资源。
我们知道手机软件的一个特点是内存较小,所以内存泄漏尤其要避免。由于设计是分开模块做的,每个人负责一部分,所以出现内存泄漏,很难查。
后来我们通过用打LOG等方法,经过将近两个周的时间,经过大家的努力和老师的帮助,内存泄漏问题解决。其他的BUG也基本解决。
针对这次的测试中出现的内存泄漏问题我们总结如下:C/C++不支持垃圾回收,那是Java的专利。所以,用C/C++编程,一定要养成细心谨慎地好习惯,尤其使用动态申请内存的时候,在C里,malloc后别忘了free,在C++里,new了之后,别忘记delete,而形成好习惯最好的途径就是多写代码。还有要学会打LOG,这个在查错的时候是一个很好,很方便的工具。
第7章 成果物截图
下面几幅截图为在此次设计中做出的成果
page1page2page11page12若图片无法显示请联系QQ3710167
 
创新点
在这次设计中,经过我们组各成员共同努力,解决了一些开始根本解决不了的问题和困难。由此在某些方面也得到了创新。
首先是关于背景,开始我们根本就不能把背景加进去,即使加到页面上也会把菜单项挡住,或其他的一些问题。最后我们成功地解决了这个问题,为我们的手机背景加上了漂亮的背景图片。而且修改很简单只要改一下资源文件就可以换上自己喜欢的任何图片。
其次,我们实现了用宏进行判断。开始由于我们背景没有加进去,所以就没能用图片作背景。在基本功能实现了后,我们才解决了图片背景的问题。为了保存有图片背景和没有图片的背景这两种情况,我们用了宏进行判断,可以使背景呈现两种情况,当有宏的时候呈现一种,当把宏注掉的时候是另一种情况。操作也特别方便。
再次,我们解决了光标的循环移动,即当光标落在第一项是,继续按UP键时,光标会跳到最后一项,当光标落在最后一项时继续按DOWN键时,光标会跳到第一项,从而实现光标的循环移动。
最后一点是我们实现了光标的半透明色。
此外,遗憾的是我们还有一点没有实现的,就是当在翻阅电话本的时候,来了电话,即竞合现象,这个时候如何在接电话时使事件挂起,使得接完电话后使画面停留在当时翻阅的电话本的那里。由于时间原因这个功能我们只是想到了没有实现。
注明:在此次设计的创新突破中我负责实现了光标的循环移动。其他几点是本小组中其他成员实现的。
 

基于CDMA手机地址录开发设计
总结与体会
本次手机应用程序的开发经历了五个开发阶段,历经了大约三个多月的时间。从需求分析到概要设计再到详细设计,最后是编码和测试。每个阶段都进行了认真、详细的设计并且严格按照软件工程的规范化流程进行开发在这次开发过程中我学到了许多崭新的知识,接触到了包含大量高新技术内容的手机开发领域,对嵌入式软件开发有了一个深刻的认识,对BREW平台有了一个较深的认识。
在这次设计中由于我们是一个小组完成了这个工程,所以使我更有感触的是合作中沟通的重要性,组员之间的相互协作也很重要,不能凭自己的想法随心所欲地想怎么做就怎么做,要服从大家的规定,否则会因为一个人耽误工程的进程。
虽然这次开发总体很顺利,但由于学习BREW时间较短,时间紧促和在某些方面存在技术上的原因,应用程序目前还存在某些缺陷。例如合理的分配有限的内存空间的问题,希望自己在以后的学习和工作中能够设计出更加高效优化的程序
谢 辞
感谢我的母校,这四年的大学生活使我成长了许多,也成熟了许多。感谢校内导师,虽然陈老师工作很繁忙,但仍抽出时间给我鼓励与指导,由于我在东软做课题,公司离学校较远,在这期间不能回校,陈老师仍然常询问我的毕业设计的进展情况并适时地给予指导和帮助。
在东软做毕业设计的过程中,公司领导及其他的一些老师都对我的工作做了长期的指导,首先确立了毕业设计课题,其次对课题的有关内容作了悉心的指导并安排我们进行专门的知识培训并安排导师指导作毕业设计。公司内的指导教师陈诗友老师,在整个设计过程中一直都是细心而又耐心给与指导,占用了许多私人时间。公司的其他领导和同事也在百忙之中对我的工作生活给予了很大的支持和帮助,在此我衷心感谢他们。
然后要感谢本小组的各成员,在这次设计中,大家互相帮助,共同努力,相互协作,所以使得本次设计成功完成。同时我从他们那里学到了很多以前没有学到的东西,我忠心地谢谢他们。
还要感谢我的父母以及我的家人。感谢他们给予我精神上的鼓励和物质上的支持,为了我的学业,他们付出了很多的汗水和心血。
最后向所有帮助过我的老师,同学,朋友及同事表示诚挚的谢意!
谢谢你们!
 

基于CDMA手机地址录开发设计
参考文献、资料
[1]李贺 尹国强 蒋亮.BREW技术开发与应用.北京:机械工业出版社,2006
[2] 卜佳俊 张海翔 陈天洲.深入BREW手机游戏开发.北京:清华大学出版
社 ,2004
[3] 郭金发 张龙.短信与BREW开发技术及实现.西安:西安电子科技大学出版社,2005
[4](美)贾那科斯. 无线通信与移动通信中信号处理研究的新进展 . 北京:电子工业出版社,2004.6
[5]丁雄. 移动通信技术 . 北京:电子工业出版社,2004.7
[6] 编委会.无线宽带网络设计与安全技术.北京:北京电子科技出版社,2006
[7] 王莹,张平. 无线资源管理(无线通信专辑) . 北京:北京电子科技出版社,2005.5
[8] 何林娜. 数字移动通信技术 . 北京:北京电子科技出版社,2004.8
[9] 方旭明,何蓉. 短距离无线与移动通信网络 . 北京:人民邮电出版社,2004
[10] 朱月秀、周钰.现代通信技术.第2版. 北京:电子工业出版社,2006.12
[11] (美)施瓦茨(Schwartz,M)著,许希斌,李云洲 译. 移动无线通信 . 北京:电子工业出版社,2006.9
[12] (美)斯托林斯(Stallings,W.) . 无线通信与网络. 第2版. 北京:电子工业出版社,2006.8
[13] 王金龙/王呈贵.无线超宽带(UWB)通信原理与应用.北京:人民出版社,2005 [14] 龚克、侯春萍、刘开华.无线传感器网及网络信息处理技术.北京:电子工业出版社,2006
[15] 杨义先. 无线通信安全技术 . 北京:北京邮电大学出版社 ,2005.5.
[16] San Diego.BREW 2.0 Sample Applications Guide.U.S.A:QUALCOMM,2002
 

基于CDMA手机地址录开发设计
附录:
中所用名词及缩略语
BREW:    无线二进制运行环境(Binary Runtime Environment for Wireless),由高通公司2001年推出作为软件接口层,位于无线设备的芯片和应用程序之间。
AEE :    可扩展的应用程序执行环境(Application Execution Environment)是一个可以充分扩展的、面向对象的应用程序开发和执行环境。该环境提供了使用C或C++开发小程序和共享模块的平台。
BREW SDK: 可以使软件开发者使用标准工具在熟悉的环境中工作,开发者无需知道芯片系统源代码,可以直接为支持BREW的设备编写应用程序。
ASIC:    (application-specific integrated circuit) 专用芯片。ASIC是一种专门用于某种应用的芯片,只能用于一种应用,比一般芯片来说,有速度快的优点。
OEM:      Original equipment manufacturer. 原始设备制造商
CDMA:    码分多址
DLL:     动态链接库
接口:    一个抽象类可为指定的服务提供一组方法。
需要代码的请联系QQ3710167
 

基于CDMA手机地址录开发设计英文文献
外文翻译资料《BREW 2.0 Sample Applications Guide》:
译文:
Expense Tracker
Expense Tracker 是一种旅行费用跟踪应用程序,使得设备用户能够记录指定时期内的费用。用户可以跟踪交易日期、支付类型和购买金额,并输入费用说明,还可以对整个时期内的费用或逐个交易进行审核。 在将所有费用输入数据库后,用户可以生成一个可在屏幕上查看的文本文件报告。
注意: 此示例应用程序的主要目标设备是 Sharp Z-800。如果您在 Simulator 上运行此程序,请选择 Sharp Z-800 设备图像以获得最佳效果。
Expense Tracker 说明
下表列出了 Expense Tracker 开发过程中使用的接口和控件,以及在手持设备上运行该应用程序所需的文件。
使用的接口     使用的控件       手持设备上需要的文件
IDatabase      IDateCtl          expensetracker.bar
IDBMgr         IDialog           expensetracker.mif
IDBRecord      IStatic           expensetracker.mod
IFile          ITextCtl          expensetracker.sig
IFileMgr
在手持设备上运行 Expense Tracker
在研究驱动 Expense Tracker 的底层代码之前,让我们先从用户的角度审视该应用程序;即,它是如何在手持设备上运行的。
运行 Expense Tracker
1. 运行 BREW Simulator,确保 MIF 目录设置指向
2. 选择 Expense Tracker 应用程序。
BREW 将加载 Expense Tracker 小程序(即 Expense Tracker 小程序动态链接库
(DLL)),并启动该应用程序。 此时将打开一个溅射屏幕
3. 从 Expense Tracker 主菜单,可以执行以下功能:
选择选项                执行操作
Add New( 添加新记录)   将新的费用记录输入数据库。 有关说明,请参阅第9 页的Add New( 添加新费用) 。
View( 查看)            查看并编辑(如果有必要)当前时期的现有费用记录。有关说明,请参阅第10 页的查看费用 或第11 页的Edit Expense( 编辑费用记录) 。
Option( 选项)          加载和查看现有费用报告,并将数据库中的当前费用保存到平面文件中,以供查看。 有关说明,请参阅第12 页的保存和加载费用报告 。
Help( 帮助)           有关使用 Expense Tracker 的信息,请查看联机说明。
About( 关于)          查看 Expense Tracker 的版权和版本信息。
4. 要返回上一屏幕,请按 CLR。
5. 任何时候要停止小程序,请按End( 结束)。
Add New( 添加新费用)
“添加新记录”菜单选项使您可以逐个记录各次交易的费用信息。也就是说,每项费用交易在数据库中是一个独立的记录。 对于每项费用,您都可以存储交易发生的日期、使用的支付类型、金额以及简要说明。
Add New( 添加新费用)
1. 从 Expense Tracker 主菜单中选择 Add New( 添加新记录)。
2. Date( 日期) 默认为当天日期。 如果需要更改,则突出显示要更改的值,然后按“向
上”或“向下”箭头键,增大或减小该值。
注意:要前进至下一字段,请按“向右”箭头键。
3. 对于Type( 类型),请按“向上”或“向下”箭头键滚动显示支付类型,直至显示正
确的类型。可用类型包括“现金”、“信用卡”、“支票”和“借记卡”。
4. 对于Amount( 金额),请使用数字键输入值,然后按下“向右”箭头键接受金额。输入金额后,该值将居左回填。 例如,要输入金额 $200.35,则应输入 20035。 要输入金额 50 美分,则应输入 50。
5. 对于Desc( 说明),您可以输入至多 16 个字符来说明费用。
6. 完成后,请按下Select( 选择)。
7. 要添加费用,请按下Done( 完成)。此时将再次打开 Expense Tracker 主菜单。
查看费用
Expense Tracker 主菜单中的View( 查看) 选项,使您可以查看指定日期范围内记录的费用。您还可以查看特定支付类型或所有支付类型的全部交易。
注意:费用记录将保留在数据库中,直至您将它们保存到平面文件报告中。 这时,将清除该日期范围内的数据库。
查看费用
1. 从 Expense Tracker 主菜单中选择View( 查看)。
此时将打开View Parameters( 查看参数) 屏幕。
2. 对于Type( 类型),请选择费用的支付类型(全部、现金、信用卡、支票和借记卡)。如果选择的类型不是“全部”,则只能查看该类型的费用。
3. 在From( 从) 和To( 至) 中,输入您要查看选定类型费用的日期范围。
4. 显示正确的参数后,请按下View( 查看)。
此时将打开Expense( 费用) 屏幕,显示指定日期范围内的费用,并在底部显示总计。
5. 通过此屏幕,您可以执行以下操作:
• 要查看各项费用的说明,请按“向上”或“向下”箭头键。
• 要返回“查看”屏幕,请按 CLR 键。
• 要编辑费用,请突出显示该费用并按下Select(选择)。请参阅下文Edit Expense(编辑费用记录)。
Edit Expense( 编辑费用记录)
添加和查看费用后,您可以根据需要,在将它们保存到报告之前进行编辑。
Edit Expense( 编辑费用)
1. 按照前述步骤,查看您要编辑的费用。
2. 突出显示您要编辑的费用,并按下Select( 选择)。
此时将打开Edit Expense( 编辑费用) 屏幕。
3. 使用与添加费用相同的方法,编辑其信息。
4. 完成编辑费用记录后,按下Select( 选择) 并执行以下操作之一:
• 按下Erase( 删除),删除该记录。
• 按下Done( 完成),保存更改内容。
此时将再次打开Expense( 费用) 屏幕,并在总计中反映更改内容。
保存和加载费用报告
在完成输入特定时期的费用后(例如商务旅行结束时),您可以将费用保存到平面文件报告中,以供将来查看。保存该报告后,将删除单个费用记录,以节省设备空间。 您可以随时加载所保存的报告,以查看费用信息。
加载现有的费用报告
1.从 Expense Tracker 主菜单中,选择Options( 选项)。
此时将打开Options( 选项) 菜单屏幕。
注意:如果自上次保存报告后再没有添加过任何费用记录,则菜单中将不显示
Save Report( 保存报告) 选项。
2. 选择Load Report( 加载报告)。此时将打开Load Report( 加载报告) 屏幕。
3. 突出显示您要加载的报告,并按下Select( 选择)。
此时将打开Report( 费用报告) 屏幕。
4. 完成查看报告后,请按下Select( 选择)。
此时将关闭Report( 费用报告) 屏幕,并再次打开 Expense Tracker 主菜单屏幕。
将费用保存到费用报告中
1. 从 Expense Tracker 主菜单中,选择Options( 选项)。此时将打开Options( 选项) 菜单屏幕。
2. 选择Save Report( 保存报告)。
此时将打开Save Report( 保存报告) 确认屏幕。
3. 要保存报告并删除费用记录,请按下Yes( 是)。
此时将保存报告,删除单个的费用记录,并再次打开Options( 选项) 菜单屏幕。
Expense Tracker 演示内容
Expense Tracker 演示了如何创建使用文件处理和数据库功能的 BREW 应用程序,以及BREW SDK 提供的各种 GUI 控件。 Expense Tracker 接口使用了若干菜单,使得用户可以访问各种程序功能,其中包括向费用数据库添加新费用、执行数据库查询、编辑和删除费用,以及生成可在屏幕上查看的费用报告。
用户通过一组表单在电话屏幕上输入信息,执行输入、搜索、编辑和删除费用记录等操作。这些表单演示了各种 BREW 控件,包括 IMenuCtl、IDateCtl、ITextCtl、IStatic,以及专为此应用程序设计的称为 CAmountCtl 的自定义控件。 表单可通过 IDialog 接口编程实现,该接口将使用 BREW 资源编辑器所创建的表单控件。Expense Tracker 还演示了 BREW 数据库应用程序的实现,使用了 IDatabase、IDBMgr 和IDBRecord 接口,以及用于文件处理的 IFileMgr 和 IFile。 通过使用 BREW 资源编辑器定义应用程序所用的字符串和图像值,该示例应用程序还可支持本地化。
MediaPlayer
MediaPlayer 是一种多媒体应用程序,可以播放声音和视频剪辑,显示静态图象。如果你装载了合适的CMX DLL,这种应用程序也可以录制和播放 QUALCOMM PureVoice (QCP) 音频剪辑。 可以存储多达 32 个多媒体文件,以供应用程序使用。 MediaPlayer 包括多种标准控件,如播放、快进、倒回、停止、暂停和记录。 MediaPlayer 广泛支持各种音频、视频和静态图形格式,包括 QCP、MPEG 音频层 3 (MP3)、乐器数字化接口 (MIDI)、BREW CompressedImage (BCI)、位图 (BMP),以及包含音频和视频的数据包模式数据 (PMD)。
 

基于CDMA手机地址录开发设计
注意: 此示例应用程序的主要目标设备是 Sharp Z-800。如果您在 Simulator 上运行此程序,请选择 Sharp Z-800 设备图像以获得最佳效果。
MediaPlayer 说明
下表列出了 MediaPlayer 开发过程中使用的接口和控件,以及在手持设备上运行该应用程序所需的文件。
使用的接口        使用的控件                    手持设备上需要的文件
IMedia            IDisplay                       mediaplayer.bar
IFile                          mediaplayer.mif
IFileMgr                 mediaplayer.mod
IMenuCtl                 mediaplayer.sig
IStatic                  此外,手持设备的 "media" 目录中
需要包含媒体文件。
在手持设备上运行 MediaPlayer
在研究驱动 MediaPlayer 的底层代码之前,先从用户的角度查看该应用程序;即,它是如何在手持设备上运行的。
运行 MediaPlayer
1. 运行 BREW Simulator,确保 MIF 目录设置指向
2. 选择 MediaPlayer 应用程序。
BREW 将加载 MediaPlayer 小程序 DLL 并启动应用程序。 此时将打开一个溅射屏
幕,并出现与以下显示类似的屏幕:略
3. 从 MediaPlayer 主菜单,可以执行以下功能:
选择选项                                      执行操作
Play File( 播放文件)           选择要在手持设备上运行的音频、视频或静态图形件。有关说明,请参阅下面的查看或播放多媒体文件。
Record QCP File( 记录QCP 文件)   使用话筒模拟设备话筒,记录 QCP 音频文件。有关说明,请参阅记录 QCP 音频文件 页20。 使“播放文件”菜单项可播放所记录的文件。
About( 关于)                   查看 MediaPlayer 的版权信息。
4. 任何时候要停止小程序,请按End( 结束)。
查看或播放多媒体文件
“播放文件”菜单选项使您可以选择要在手持设备屏幕上运行的音频、视频或静态图形文件。
下面将逐一说明各种媒体类型。
播放音频文件
1. 从 MediaPlayer 主菜单中选择Select File( 播放文件)。此时将打开Select File( 选择文件) 屏幕。
2. 突出显示您要播放的音频文件(MIDI、QCP 或 MP3),并按下Select( 选择)。此时将打开与以下显示类似的屏幕。
3. 要播放音频剪辑,请按下Select( 选择)。此时将播放声音剪辑并在底部状态栏中显示已播放的时间。其它控件将在下文中说明。
4. 完成播放媒体文件后,请按下 CLR。此时将再次打开Select File( 选择文件) 屏幕。
查看静态图像
1. 在Select File( 选择文件) 屏幕中,突出显示您要查看的图像文件 (BMP) 并按下Select( 选择)。
2. 要清除屏幕并只显示该图形,请按下Select( 选择) 键,选择工具栏按钮Zoom( 缩放)。此时显示图像,屏幕顶部或按钮栏将不显示信息。
3. 按下任意键返回上一视图。
4. 您还可以使用箭头键向左、向右、向上和向下滚动图形。
5. 完成查看静态图形图像后,请按下 CLR。此时将再次打开Select File( 选择文件) 屏幕。
6. 要退出 MediaPlayer,请按下End( 结束)。
记录 QCP 音频文件
MediaPlayer 使您可以通过设备话筒记录您的声音或其它声音,然后使用“播放文件”菜单项重放所记录的声音。 每个记录的长度没有限制;但是,由于手持设备上的内存量有限,因此持续时间相对较短。
记录 QCP 文件
1. 从 MediaPlayer 主菜单中选择Record QCP File( 记录 QCP 文件)。
此时将打开( 记录) 屏幕。
请注意,屏幕顶部有一个文件名。这是记录要使用的文件名。 还请注意,此时按钮
栏中包含一个绿色的“记录”按钮。
2. 突出显示" 记录" 按钮并按下Select( 选择)。“记录”屏幕将在按钮栏上显示记录时间。
3. 如果要停止记录,请突出显示Stop( 停止) 按钮并再次按下Select( 选择)。
该记录将使用屏幕顶部显示的名称保存。至此,从 MediaPlayer 主菜单中选择
Play File( 播放文件) 选项时可以选择播放该文件。
MediaPlayer 演示内容
MediaPlayer 演示了如何创建 BREW 多媒体应用程序。 BREW 程序员可使用 IMedia 和基于IMedia 的接口构造媒体播放器,播放和记录所有多媒体格式(包括音频和视频)。当前,如果你装载了合适的CMX DLL,它便支持 QCP 记录。 MediaPlayer 使用 IImageCtl 和 IImage接口显示图像。 程序员提供了以下基本指导,以帮助您创建类似的应用程序。
 创建自己的接口(抽象基类)并在应用程序中使用。 MediaPlayer 使用了一个IWindow 接口,所有窗口均继承于该接口。 每个窗口都可以刷新其本身并处理发送
给它的事件。共有三个窗口:
1)主窗口管理主菜单。
2)“文件列表”窗口使用户可以从列表中选择媒体文件。
3)“播放器”窗口启用播放和记录控件。
使用各种控件,如 IMenuCtl、IImageCtl 和 IStatic。 MediaPlayer 还向您展示了如何使用 IDisplay 实现自己的进度条控件。
通过 ISHELL_Resume() API (用于将一个大任务分割成若干小程序块)启用协作式多任务处理。 在 MediaPlayer 中, IWindow 为异步刷新。 MediaPlayer 还演示了应用程序中异步计时器的用法。
在应用程序中使用用户自定义事件。例如, MediaPlayer 使用用户自定义的事件创建了基于 IMedia 的类。
 
 
设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师