基于Java的模拟手机系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Java的模拟手机系统
摘要:随着社会的发展,移动通信设备在人们的生活中发挥了越来越大的作用,集成Java技术的移动电话,在未来可以为商务用户提供更具吸引力、更符合需求且简单易用的无线数据服务。
随着时间的推进,Java微型版(J2ME)在移动设备方面的应用会越来越广。
J2ME是一种把Java语言应用于嵌入式系统的软件开发模式,它定义了配置和简表两个核心概念,它们共同构成了J2ME的体系结构,这些结构特性使J2ME非常适合移动设备的程序设计。
本文介绍了在基于Java 2 Micro Edition(J2ME)规范上开发一个手机的模拟系统。
该系统充分体现了J2ME的体系架构和各模块的特点,设计采用了面向对象的方法,基本模拟实现了手机的部分功能,并着重讨论设计开发过程中的问题。
关键字:J2ME ;手机模拟;MIDP ;CLDC
Mobile Phone System Simulation Java Based
Abstract: With the development of society, mobile communications equipment have played an increasing role in people's lives. Mobile phones of the integration java of technology provide business users with more attractive in the future and are more in line with demand and easy-to-use wireless data services. With the advance of time, Java Micro Edition (J2ME) mobile devices in the application will become more and more widely.
J2ME is a software development model that Java language used in the embedded systems, which defines the configuration and a summary table as the two core concepts, they constitute the J2ME architecture, and these structural features are very suitable for J2ME programming for mobile devices.
These titles, Java 2 Micro Edition (J2ME) based on specificly develop a simulation system for mobile phones. The system fully demonstrates the J2ME architecture and the characteristics of each module, designed with object-oriented approach, the basic analog part of the realization of the mobile phone functions, and focused on the design and development issues in the process.
Keywords:J2ME;Phone Simulation;MIDP;CLDC
目录
1 引言 (1)
1.1论文研究背景与意义 (1)
1.2本课题研究内容与目标 (1)
2 开发环境和相关技术介绍 (2)
2.1J AVA语言的特点 (2)
2.1.1 平台无关性 (2)
2.1.2 安全性 (2)
2.1.3 面向对象 (2)
2.1.4 分布式 (2)
2.1.5 健壮性 (2)
2.2本系统的开发环境 (2)
2.2.1 开发平台-- Eclipse (2)
2.2.2 开发环境-- Wireless Tool Kit (3)
2.3本系统采用的编辑工具 (3)
2.4J2ME简介 (3)
2.5MID LET程序开发的基本方法 (3)
3 需求分析 (5)
3.1对系统功能的定义 (5)
3.2用例描述 (5)
3.2.1 用户拨打电话用例描述 (5)
3.2.2 用户短息发送用例描述 (6)
3.2.3 用户进行电话薄用例描述 (6)
3.2.4 用户进行计算器操作用例描述 (6)
3.2.5 用户进行动画演示操作用例描述 (7)
3.2.6 用户进行多媒体操作用例描述 (7)
3.2.7 用户进行聊天操作用例描述 (7)
4 概要设计 (8)
4.1系统框架设计 (8)
4.2对象-行为模型 (8)
5 详细设计 (10)
5.1.1 PNG图片格式 (10)
5.1.2 九宫格主菜单 (10)
5.1.3 主菜单实现的原理和过程 (10)
5.1.4 各功能界面的设计 (11)
5.1.5 主要类分析 (11)
5.2拨打电话功能的设计 (12)
5.2.1 设计目标 (12)
5.2.2 类设计 (12)
5.2.3 主要代码分析 (12)
5.2.4 运行效果 (13)
5.3收发短息功能的设计 (13)
5.3.1 知识点介绍 (13)
5.3.2 设计目标 (13)
5.3.3 类设计 (13)
5.3.4 主要代码分析 (14)
5.3.5 运行效果 (16)
5.4电话薄功能的设计 (16)
5.4.1 知识点介绍 (16)
5.4.2 设计目标 (17)
5.4.3 类设计 (17)
5.4.4 主要代码分析 (18)
5.4.5 运行效果 (19)
5.5计算器功能的设计 (19)
5.5.1 设计目标 (19)
5.5.2 类设计 (19)
5.5.3 主要代码分析 (19)
5.5.4 运行效果 (20)
5.6多媒体功能的设计 (20)
5.6.1 知识点介绍 (20)
5.6.2 设计目标 (21)
5.6.3 类设计 (21)
5.6.4 主要代码分析 (22)
5.6.5 运行效果 (23)
5.7动画功能的设计 (24)
5.7.2 类设计 (24)
5.7.3 主要代码分析 (24)
5.7.4 运行效果 (25)
5.8聊天功能的设计 (25)
5.8.1 知识点介绍 (25)
5.8.2 设计目标 (25)
5.8.3 类设计 (25)
5.8.4 主要代码分析 (26)
5.8.5 运行效果 (27)
6 系统测试 (28)
6.1打包测试 (28)
6.2内存优化问题 (29)
6.3BUG (29)
6.4需完善的功能 (30)
7 结论 (31)
致谢 (32)
参考文献 (33)
1 引言
1.1 论文研究背景与意义
自SUN公司发布J2ME无线开发平台以来,基于J2ME的无线应用得到了很大的发展。
作为Java 2平台的一部分,J2ME与J2SE、J2EE一起,为无线应用客户端和服务器建立了完整的开发和部署环境。
但是由于受到无限移动设备内存、CPU、输入/输出设备等资源的限制,使得无线应用开发与桌面或企业应用开发有很大的不同。
J2ME作为第一个面对小型设备的Java应用开发规范,CLDC是由包括Nokia,Motorola和Siemens在内的18家全球知名公司共同协商完成的。
CLDC是J2ME核心配置中的一个,可以支持一个或多个profile。
其目标主要面向小型的、网络连接速度慢、能源有限(主要是电池供电)且资源有限的设备,如手机、PDA等。
而CDC 则是主要用于运算能力相对较佳、在电力供应上相对比较充足的嵌入式装置(比方说冷气机、电冰箱、电视机机顶盒(set-top box))
J2ME有它顽强的生命力与优势,从现在来看移动应用还是比较简单的,随着行业的发展,开发商必然会开发更强劲的应用出来,不论游戏还是商业应用。
1.2 本课题研究内容与目标
本课题采用面向对象的方法,用Java模拟手机模型。
Java手机模拟系统是为了适应互联网发展的需要,同时利用Java的多线程、安全性、平台移植性等特点开发而成。
本次毕业设计以Java手机模拟器的应用作为主线,介绍了Java手机模拟器的设计思想和电话机的每个模块。
包括拨号功能、收发短信、存储功能、多媒体、以及动画等,其中用到了J2ME中最主要的技术有人机交互设计、多线程、多媒体技术、Socket 技术、Message技术等。
本设计的应用程序是在WINDOWS操作系统下在Java 平台上开发和测试运行的,系统的界面是用J2MEWTK制作的,采用小程序嵌入手机界面或者是手机仿真器中。
本设计主要目标是了解J2ME的体系架构和学习开发手机程序的基本流程。
2 开发环境和相关技术介绍
2.1 Java语言的特点
2.1.1 平台无关性
Java的一个显著优点就是运行时环境提供了平台无关性,它引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。
使用Java编写的程序能在不同的平台运行。
Java的数据类型与机器无关,Java规范中没有“依赖具体实现”[1]的概念。
Java中基本数据类型的大小及其算法都做了明确的规定。
2.1.2 安全性
Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。
它提供了安全管理器,防止程序的非法访问。
2.1.3 面向对象
Java吸收了C++面向对象的概念,将数据和操作封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。
2.1.4 分布式
Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。
2.1.5 健壮性
Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。
Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。
2.2 本系统的开发环境
在进行高效的系统开发之前,需要配置一个J2ME开发平台和开发环境,这里采用开源的Eclipse平台和Sun公司的J2ME无线工具包(WTK Wireless Tool Kit)。
2.2.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和Eiffel 等编程语言的插件已经可用,或预计会推出。
Eclipse 框架还可作为和软件开发无关的其他应用程序类型的基础,比如内容管理系统。
Eclipse 是一个开放源代码的、基于Java 的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
2.2.2 开发环境--Wireless Tool Kit
WTK(Wireless Tool Kit)是Sun公司针对J2ME推出的用于手机和Palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。
它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商不具有一定的兼容性。
虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他IDE需集成采用的必备元素。
2.3 本系统采用的编辑工具
jdk-1_6_x 或jdk-1_5_x
sun_java_wireless_toolkit-2_5_2-ml-windows
eclipse-SDK-3.3.2
eclipseme.feature_1.7.9_site
2.4 J2ME简介
Sun Microsystems 公司将J2ME 定义为“一种以广泛的消费性产品为目标的、高度优化的Java运行时环境,包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导航系统。
1999年6月在Java One Developer Conference上声明之后,J2ME进入了小型设备开发的行列。
J2ME通过Java的特性,遵循J2ME规范开发的Java程序可以运行在各种不同的小型设备上。
Sun公司希望借助J2ME这把利剑对嵌入式设备这个混乱的领域进行统一,让Java的范围扩展到所有电子设备开发上。
按照现在的发展速度,J2ME很快将被广泛应用于消费和嵌入式设备中。
J2ME主要适用于小型嵌入式设备[2],这些设备与PC或是服务器设备相比没有统一的硬件标准、外观与操作方式,其功能也是千差万别的。
但是J2ME在适用于这些设备的同时也保留了Java的传统特性,即任何时候和任何地点的代码具有可移植性、部署灵活性、安全的网络传输性,以及代码稳定性。
2.5 MIDlet程序开发的基本方法
如图2-1示在MIDlet 程序[3]开发开发过程中,一般有以下几步:
图2-1 MIDlet 程序开发的基本方法
a.编写源代码,生成.java文件。
b.编译、预校验,生成.class文件。
c.在模拟器上运行并测试。
d.打包生成jar文件。
3 需求分析
3.1 对系统功能的定义
该系统具有的基本操作的描述如下:
a.拨打电话。
b.短信发送。
c.电话薄。
d.计算器。
e.简单聊天。
f.多媒体演示。
g.动画演示。
手机模拟系统的User Case[4]如图3-1:
图3-1 User Case 3.2 用例描述
3.2.1 用户拨打电话用例描述
[引言]
用户进行模拟打电话操作。
[主事件流]
用户在界面上选择“打电话”的图标按钮时,用例开始。
用户通过按键输入电话号码,按“拨打电话”按钮进行拨号。
若电话号码不可以使用,系统提示拨打异常,若可用则提示成功。
[异常事件流]
用户可以在打电话主界面按“返回”按钮时,该用例结束。
[异常事件流]
用户按“拨打电话”按钮进行提交时,若用户输入的电话号码不能使用时系统提示拨打异常,若可用则提示成功。
3.2.2 用户短息发送用例描述
[引言]
用户进行模拟短息的发送和接收操作。
[主事件流]
用户在界面上选择“收发短信”的图标按钮时,用例开始。
用户通过按键选择是“发短信”还是“收短信”。
若是发短信则输入收信人号码和发送内容,若发送成功,在收信人处会提示接收到信息,否则返回当前界面。
若选择收短信,处于接收信息状态,若收到信息则提示收到信息,否则放回上一界面。
[异常事件流]
用户可以在收发短息主界面按“返回”按钮时,该用例结束。
[异常事件流]
用户按“发信息”成功,则收信人处会提示接收到信息且都返回当前界面。
3.2.3 用户进行电话薄用例描述
[引言]
用户进行电话薄操作。
[主事件流]
用户在界面上选择“电话薄”的图标按钮时,用例开始。
用户通过按键选择“电话本”。
若在选择“添加电话”按钮,用户输入姓名和电话,按确定则添加成功。
若选择“删除电话”按钮和选中电话,则删除电话成功。
[异常事件流]
用户在电话薄主界面按“返回”按钮时,该用例结束。
3.2.4 用户进行计算器操作用例描述
[引言]
用户进行计算器操作。
[主事件流]
用户在界面上选择“计算器”的图标按钮时,用例开始。
用户通过方向键选择需
要的运算符和运算数,并选择“=”得到结果并显示在屏幕上。
[异常事件流]
用户可以在计算器主界面按“返回”按钮时,该用例结束。
3.2.5 用户进行动画演示操作用例描述
[引言]
用户进行动画演示操作。
[主事件流]
用户在界面上选择“动画”的图标按钮时,用例开始。
用户通过暂停和继续按钮来控制小球的大小计位置。
[异常事件流]
用户可以在动画演示主界面按“返回”按钮时,该用例结束。
3.2.6 用户进行多媒体操作用例描述
[引言]
用户进行多媒体操作。
[主事件流]
用户在界面上选择“多媒体”的图标按钮时,用例开始。
用户通过选择播放视频的路径,找到要播放的视频文件,在进行进一步操作。
[异常事件流]
用户可以在“多媒体”主界面按“返回”按钮时,该用例结束。
3.2.7 用户进行聊天操作用例描述
[引言]
用户进行聊天操作。
[主事件流]
用户在界面上选择“聊天”的图标按钮时,用例开始。
用户通过选择自己是服务器还是客户端并确定通信端口,在进行服务器和客户端之间的通信。
[异常事件流]
用户可以在“聊天”主界面按“返回”按钮时,该用例结束。
4 概要设计
4.1 系统框架设计
该系统分为七大功能模块,都是在Windows平台下模拟实现的,具体含有客户端、服务器。
本系统的所有功能中所涉及的客户端和服务器[5]都是在本地连接上。
业务逻辑层:主要负责与客户端服务器端通信、处理业务数据等功能。
具体的主要系统框架如图4-1所示:
图4-1 系统框架
4.2 对象-行为模型
用户通过主界面菜单和用户界面导航,可以进行各种操作。
用户的操作都是通过选择或输入数据,然后由类发送请求并调用相应的业务逻辑方法,将结果返回给客户端或返回错误的响应代码。
具体的对象-行为模型如图4-2所示:
图4-2 对象-行为模型
4.3 系统状态变迁图
当用户启动应用程序后,用户可以进行各种操作。
当用户选择退出时,退出应用
程序。
具体的系统状态变迁图如图4-3所示:
图4-3 系统状态变迁图
5 详细设计
5.1 用户界面的设计
用户界面是应用程序用于与用户进行交互[6]。
MIDP2.0提供了丰富的高级GUI 和低级GUI组件以及事件处理机制,可构建直观的用户界面。
5.1.1 PNG图片格式
PNG(Portable Network Graphics)格式是MIDlet唯一支持的图像格式,PNG具体格式由PNG Specification,Version 1.0定义的。
PNG格式提供透明背景的图像,这对绘制九宫格界面极有帮助,使用Image类中的createImage函数可从屏幕上画图。
5.1.2 九宫格主菜单
在MIDP图形用户界面组件中,List非常适合做菜单,其可移植性非常出色。
不足之处在于表现形式比较单一,对用户的视觉冲击不够。
本科课题的主菜单采用九宫格的设计方案,可以弥补以上的不足。
九宫格主菜单的具体内容如图5-1所示:
图5-1 系统主菜单
5.1.3 主菜单实现的原理和过程
a.准备一张PNG图片,上面绘制9个表示各个功能的小图标。
b.用Image.createImage(28,28) 创建9个小图片,再转换坐标绘制九个小图片。
代码如下:
try{
for(int k = 0; k < 9; k++)
img[k] = Image.createImage("/img"+k+".png"); //创建9个小图片
}catch(Exception ex){
ex.printStackTrace();
}
c.定位九个图片具体位置:手机菜单要适合不同的手机屏幕,所以表示功能的小图片要设计得大小适宜。
定位算法:
手机X轴定位:单元格宽*(i%3)+(单元格宽-小图片宽)/2
手机Y轴定位:单元格高*(i/3)+(单元格高-小图片高)/2
d.当用户用上下键有左右键时,可以选择菜单功能,主要是产生0到8这九个数字。
5.1.4 各功能界面的设计
用户可以从主菜单点确定进入任何一个功能界面,且每一个显示界面值可以完成一个单一的简单的功能。
应用程序中的大部分事件处理都是由两个动作发出的:下一步(或提交)和返回(或取消)。
下一步是指完成了当前的任务,需要进入下一个界面。
返回是指返回到当前界面的前一个界面。
在UI的构造器中将前面或后面的界面传递到当前对象,用这个方法来解决前进或后退的问题虽然可行,但这样做会导致界面之间的耦合度大大提高,如果需求发生变化,重构的工作量较大,程序不易维护,所以在这里用到了回调的模式[7],加强程序的封装性,提高了程序的独立性。
5.1.5 主要类分析
以下是主菜单所需要的类之间的关系如图5-2:
图5-2 系统主菜单类间关系
a.Canvas类[8](系统自定义类)
为了能有程序开发人员控制接口的外观和行为,需要使用大量的初级用户接口类,尤其在界面开发中,几乎完全依赖的就是Canvas抽象类进行绘图。
从程序开发的观点看,Canvas类可与高级Screen类交互,程序可在需要时在Canvas中掺入高级类的组件。
Canvas提供了键盘事件,并定义了允许将键盘按键映射为游戏控制键的
函数。
键盘事件由键代码指定,应当将键代码转换为游戏键的代码,以便硬件开发商能定义他们自己的键布局。
b.myCanvas类
该类继承了Canvas类,实现九宫格主菜单的画法,可用于键盘控制选择菜单,方便了用户操作。
c.PhoneSystem 类
该类是系统的主类,继承了javax.microedition.midlet.MIDlet,负责创建程序的主菜单,并启动应用程序。
d.MenuCanvas类
该类实现不同功能界面与主界面的连接。
5.2 拨打电话功能的设计
5.2.1 设计目标
为用户提供发送打电话的功能。
5.2.2 类设计
该功能的实现由一个类实现,它与系统类之间关系如图5-3:
图5-3 拨打电话类间关系
a.From类(系统自定义类)
From类是Screen的子类,其对象是Item组件的容器,可以直接设置在屏幕上。
Item组件不可以直接设置在屏幕上,需要放置在一个From对象上才可以显示在屏幕上。
b.CommandListener接口
CommandListener接口主要是为显示对象添加命令按钮的监听器,这样用户在按下命令按钮式,才会触发命令按钮的处理代码。
其定义了一个CommandAction()方法。
c.CallDemo类
主要实现打电话界面,其获取输入的电话号码并进行拨打。
5.2.3 主要代码分析
该类主要调用了MIDlet的一个platformRequest()方法,主要用于申请设备区处理指定的操作。
其在程序中的使用如下:
midlet.platformRequest("tel:"+tfPhoneNumber.getString());
由于在模拟器上不可以运行,因为拨打电话需要调用手机中的电话程序。
在这里对其进行异常的处理。
5.2.4运行效果
图5-4 打电话主界面图5-5提示界面
5.3 收发短息功能的设计
5.3.1 知识点介绍
本功能的设计用到无线消息API2.0(JSR205规范定义的可选包)[9],它提供了发送、接收无限消息的功能。
无线消息API定义在javax.wireless.message包中,该包定义了6个接口、2个类。
本功能主要用到MessageConnection、Message、TestMessage、MessageListener四个接口。
其具体内容在此不做详细介绍,其详情可以参看无线消息API。
5.3.2 设计目标
a.发送短息。
为用户提供文本消息编辑器,并把编辑后的文本消息发送到指定的地址。
b.接收短信。
当应用程序运行时,可以接收文本消息。
当短消息到来时提示用户查看。
5.3.3 类设计
该功能主要有四个类:SMSMIDlet、SenderFrom、Receive、Inbox,它们之间的关系图下图5-6:
图5-6 收发短息类间关系
a.SMSMIDlet类
该类是本功能的主类,实现了CommandListener接口,可处理“返回”、“选择”等用户界面。
本类还定义了下面的方法。
public void showError(String errMsg) ——显示错误信息。
public void notifyUser() ——提示用户有新的消息到达。
b.SenderFrom类
该类提供了编辑短消息的界面和发送短信的功能。
发送无线消息是在一个线程中完成的,每当用户发送一条消息时,该类都会创建一个新的消息发送线程,这可以避免阻塞用户界面。
c.Receiver类
该类提供了打开短信连接及接收短信的功能。
当打开消息连接时,该类将创建并启动一个接收消息的线程。
如果没有消息到达,那么该线程处于等待状态;当有消息到达时,可以调用handlMessage()方法通知线程接收信息,线程把消息存储到收件箱中,通知用户查看。
d.Inbox类
该类描述了收件箱,提供了查看接收的短信的功能。
该类提供了添加信息、显示信息、浏览信息等功能。
该收件箱只能接收文本类型的消息。
5.3.4 主要代码分析
a.创建无线消息连接
客户端:
msgConn = (MessageConnection)Connector.open("sms://" + receiverAddress + ":" + desPort);
服务器端:
msgConn = (MessageConnection)Connector.open("sms://:"+port);
b.发送无线消息
发送过程如下:
1)创建无限消息客户端连接。
2)调用连接对象的newMessage方法创建一个消息对象。
3)设置消息对象的内容。
4)使用连接对象的send方法发送消息。
代码演示:
public void run() {
try {
//建立连接
String smsUrl = "sms://" + receiverAddress + ":" + desPort;
MessageConnection msgConn = (MessageConnection) Connector
.open(smsUrl);
//创建文本消息
TextMessage textMessage = (TextMessage) msgConn
.newMessage(MessageConnection.TEXT_MESSAGE);
textMessage.setPayloadText(messageContent);
//发送消息
msgConn.send(textMessage);
//关闭连接
msgConn.close();
} catch (IOException e) {
// TODO Auto-generated catch block
midlet.showError("发送消息错误!\n" + e.toString());
}
}
c.接收无线消息
接收无限消息过程如下:
1)创建无限消息服务器端连接。
2)设置消息监听器。
3)当消息到达时,监听器将回调MessageListener接口中notifyIncomingMessage 方法,并调用recive方法接收消息。
代码演示:
//创建连接
msgConn = (MessageConnection)Connector.open("sms://:"+port);
//接收消息
Message message= msgConn.receive();
//判断是否是文本消息
if(message instanceof TextMessage){
inbox.add((TextMessage)message);
midlet.notifyUser();
}
5.3.5 运行效果
图5-7 发件箱图5-8 提示信息
图5-9 收到信息提示图5-10 收件箱
5.4 电话薄功能的设计
5.4.1 知识点介绍
本功能用到了记录管理系统(Record Management System,RMS),它提供了本地
数据持久化存储机制,简单的讲就是一个简单的面向记录的数据库。
Javax.microedition.rms包提供了操作这个数据库的类和接口。
本功能中主要用到RecordStore类,它的对象表示一个记录存储区,一个记录存储区总是和一个MIDlet套件相关联。
主要提供了管理、操作记录存储去的各种方法。
5.4.2 设计目标
a.实现联系人和电话号码的存储,但程序关闭时记录自动销毁。
b.实现对电话记录的添加以及删除。
c.显示全部电话记录。
5.4.3 类设计
该功能包含5个类,其关系如下图5-11:
图5-11 电话薄功能类关系
a.WelcomeCanvas类
电话薄主界面类,该类实现电话薄的主界面,并实现CommandListener接口,处理返回、退出等按钮。
b.PhoneText类
实现显示电话簿的所有记录。
c.PhoneList类
实现对电话记录的录入、删除操作。
d.AddFrom类
实现添加电话记录界面以及添加电话方法。
e.RMSOpe类
该类实现对RMS记录集的打开、关闭,以及为其添加和删除记录。
主要方法:
public void OpenRecordStore() //打开记录集
public void addPhone(String name,String Phone) //为记录集添加记录public void delPhone(String str) //删除记录集记录
public Vector getAllPhone() //获取记录集信息
public void CloseRecordStore() //关闭记录集
5.4.4 主要代码分析
删除记录集记录:
public void delPhone(String str)
{
int lastId=0;
try
{
lastId = rs.getNextRecordID();//获取记录集的编号
} catch (Exception e1)
{
e1.printStackTrace();
}
for (int i = 0; i < lastId; i++)
{ //循环查找记录
byte b[];
try {
b = rs.getRecord(i); //获取记录信息
String RecordStr = new String(b);
if (RecordStr.equals(str))
{
//判定记录信息是否与str相等
rs.deleteRecord(i); //删除记录集
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
5.4.5 运行效果
图5-12 收到信息提示图5-13 收件箱5.5 计算器功能的设计
5.5.1 设计目标
a.提供虚拟输入键盘,用户可以通过方向键输入数据,进行计算。
b.计算器可以进行加、减、乘、除运算。
c.可以进行连续的混合运算。
5.5.2 类设计
本功能有2个类,关系如下图5-14:
图5-14 计算器功能类关系a.CaleMIDlet类
实现计算器的主界面。
b.CalcCanvas类
进行按键处理,实现加、减、乘、除运算。
5.5.3 主要代码分析
绘制焦点矩形:
/**
* 绘制焦点矩形
* g 图形对象
* num 焦点编号
*/
private void drawFocus(Graphics g,int num){
//设置绘制颜色为红色
g.setColor(255,0,0);
//设置焦点的X和Y坐标
setXandYByNum(num);
//绘制选择框
g.drawRect(focusX,focusY,buttonWidth,buttonHeight);
}
5.5.4 运行效果
图5-15 计算器界面
5.6 多媒体功能的设计
5.6.1 知识点介绍
本功能用到了移动多媒体API(Mobile Media API)和文件系统(FileConnection)。
MMAPI框架有一个管理器、一个数据源、一个播放器和若干个控制器组成,其中播放器是核心。
它们关系如下图5-16:
图5-16 MMAPI框架
FileConnection可以访问设备本地系统根目录中的文件,并且其可以访问各种存储卡中的文件。
5.6.2 设计目标
a.当用户选择“打开视频文件”选项时,在屏幕上显示文件对话框。
在文件对话框中列出当前目录下所有的子目录或和MPEG格式的视频文件。
用户可以选择打开一个视频文件,也可以选择进入子目录或者返回上一级目录。
文件对话框第一次显示时,将列出移动设备中所有文件系统的根目录。
b.当用户打开一个视频文件是,将启动播放器,在屏幕上播放选择的视频文件。
在播放过程中,用户可以通过屏幕上的命令暂停播放和继续播放视频。
用户还可以通过下方的方向键改变音量,向上和向右表示增大音量,向下和向左表示减小音量。
c.用户可以停止播放视频,返回播放器主菜单,再次打开文件对话框,打开视频文件。
5.6.3 类设计
该功能包含4个类和一个接口。
一个控制器类MobilePlayer;一个视图类VedioCanvas;一个视频播放器类VedioPlayer以及一个文件对话框VedioFileDialog类和文件对话框命令接口VedioFileDialogListener。
其关系如下图5-17:
图5-17 多媒体功能类关系
a.MobilePlayer类。