手持移动设备16章习题答案.docx
- 文档编号:23411009
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:23
- 大小:28.30KB
手持移动设备16章习题答案.docx
《手持移动设备16章习题答案.docx》由会员分享,可在线阅读,更多相关《手持移动设备16章习题答案.docx(23页珍藏版)》请在冰豆网上搜索。
手持移动设备16章习题答案
《手持设备移动应用开发》作业习题
第1章J2ME概述
1.什么是手持移动设备?
答:
本课程所谓的手持移动设备是指能随身携带的小型智能电子设备,通常硬件系统应包含处理机、内存和输入输出设备,而软件系统应包含嵌入式操作系统、可安装或卸载的嵌入式应用软件。
目前主要的手持移动设备有智能手机、PDA等消费类小型电子设备,也可以包括各类便捷式嵌入式电子设备。
2.以智能手机为例的手持移动设备,目前主要有哪些智能手机手持设备操作系统,各自支持何种开发平台?
(提示:
通过网络搜索查找)
答:
目前主流的智能手机类手持移动设备操作系统及各自支持的开发平台有:
Microsoft公司操作系统:
WindowsMobile开发平台:
C#.net
Nokia公司操作系统:
Symbian开发平台:
SymbianC++
Google公司操作系统:
Android开发平台:
Java
Apple公司操作系统:
IOS开发平台:
Objective-C
ResearchInMotion公司操作系统:
BlackBerry开发平台:
Java
3.简述Java三个版本的区别联系,以及本课程采用J2ME作为开发平台的原因。
答:
区别:
Java的三个版本分别针对不同的领域。
三个版本其基本语法完全相同,只是根据针对的对象设备不同,API库有些差异。
联系:
J2SE包含了Java基本的核心的元素,是J2EE和J2ME的基础。
J2EE是Java的高级版本,在J2SE基础上增加了新的类库,引入了新的技术,主要用于服务器端的程序;J2ME在J2SE基础上删减了部分内容,还引入了专门的API类库。
原因:
J2ME主要用于移动设备等小型电子设备的软件开发,本课程针对手持移动设备开发。
J2ME有专门的API类库。
J2ME是手持移动设备开发目前的主流开发平台,通用性强。
4.手持设备移动开发中与J2ME技术中Configuration、Profile对应的技术名称是什么?
答:
Configuration:
CLDC(ConnectedLimitedDeviceConfiguration,连接受限设备配置)
Profile:
MIDP(MobileInformationDeviceProfile,移动信息设备配置简表)
5.J2ME体系结构中J2ME核心类库、Configuration、Profile及可选包各有什么作用?
互相间是怎样的层次关系?
答:
(1)J2ME体系结构中J2ME核心类库的作用:
包含Java运行基本的核心部分,可以适用于不同的嵌入式设备,是Java语言能够运行的核心部分类库,也是通用的基础部分类库
Configuration作用:
这是由设备厂商根据具体设备特点实现的最小类库和虚拟机规范,是该类设备的J2ME运行环境,但只提供了J2ME必需的包,实现设备最基本的J2ME功能,不同设备有不同的Configuration,这是因为同类设备可以有不同型号,但同类设备之间有相同的功能,相同功能部分就由Configuration实现,达到中求同存异的效果。
需要注意的是Configuration不能单独使用,应和Profile配合使用,这样才能实现设备完整的功能开发。
同类设备不同型号可以有不同的功能,因此,
Profile作用:
由于Configuration只提供了同类设备不同型号间的最基本的相同功能规范,而同类设备不同型号的特有功能则由Profile规范实现。
可选包作用:
提供了功能的进一步扩展,可以增加特定设备的特定功能,比如型号改进增加的功能等等。
(2)J2ME体系结构中J2ME核心类库、Configuration、Profile及可选包互相间存在着上层类库依存下类库的层次间依存关系,其中J2ME核心类库是基本的核心类库(即最下层的类库),由下向上依次是Configuration、Profile及可选包。
6.什么是MIDlet?
答:
在J2ME技术平台上按照MIDP规范建立的应用程序。
MIDlet是应用程序管理最基本的单元。
J2ME应用程序必须继承MIDlet,然后重写三个事件函数。
MIDlet中包含有启动、停止、销毁三个函数和一个构造函数,MIDlet首先调用不带参数的构造函数然后应用程序管理器根据当前的MIDlet的状态,决定调用启动、停止或销毁中的某一个。
7.MIDlet应用程序中MIDlet类包含哪些主要函数(方法)?
名称是什么?
各有什么作用?
答:
MIDlet应用程序中MIDlet类中必须包含:
(1)构造方法:
与用户创建的MIDlet类同类,实现类的对象的创建及初始化工作,是MIDlet类对象运行中道德自动启动的方法。
(2)startApp()方法:
启动应用程序方法,在构造方法后运行完成后自动启动的方法。
(3)destroyApp():
销毁应用程序方法,通常在结束程序前调用,完成程序的结束工作。
(4)pauseApp():
暂停应用程序方法,在程序运行中概括需要调用该方法,实现程序的暂停运行工作。
第2章J2ME开发环境配置
1.什么是手机模拟器?
答:
一种能在PC机上仿真手机软硬件环境及界面,使得手机软件的编程、调试、运行、测试等开发过程可以在PC机的模拟环境中实现的软件系统。
2.简述WirelessToolKit的功能。
答:
SunJ2MEWirelessToolKit(缩写为WTK)是Sun公司提供的无线开发工具包,是一个包含手机实用工具、类库、文档、实例以及手机模拟器等的开发套件。
WirelessToolKit的功能是提供了四种模拟器,利用软件来代替模拟电子设备。
这样可以在程序开发成功后不用修改或者仅做简单的修改后就可以将应用程序直接下载到手机上运行该应用程序,简化了开发过程,提高了开发效率。
3.简述WTK中四种模拟器名称及功能。
答:
四种模拟器分别是:
Defaultcolorphone用于具有彩色显示屏幕的手机模拟器
Defaultgrayphone用于具有单色灰度屏幕的手机模拟器
Mediacontrolskin用于具有音频和视频控制功能的手机模拟器
Qwertydevice用于具有标准打字键盘的手机模拟器
4.请说明构建基于eclipse构架J2ME编程环境所需软件及下载地址。
答:
基于eclipse构架J2ME编程环境所需软件:
JDK1.5或以上版本、Eclipse3.2或以上、WTK2.5.2、EclipseME插件及Eclipse简体中文语言包。
下载地址:
JDK
WTK
Eclipsehttp:
//www.eclipse.org
EclipseMehttp:
//eclipseme.org/
Eclipse简体中文语言包 http:
//www.eclipse.org/babel/
5.请说明构建基于eclipse构架J2ME编程环境软件安装步骤。
答:
(1)JDK的安装;
(2)WTK的安装;
(3)Eclipse的安装;
(4)加载EclispeME到Eclipse中;
(5)加载WTK到Eclipse中;
(6)安装Eclipse简体中文语言包。
6.简述构建MIDlet项目程序的步骤。
答:
以Eclipse3.6英文版为例:
(1)建立J2MEMideletSuite项目步骤:
打开eclipse点击filenewprojectJ2MEJ2MEMideletSuite在出现的对话框中输入ProjectnameNext在出现的对话框中完成Device和Group的选择(如果尚未导入WTK,需在此步骤中导入WTK)Finish;
(2)建立J2MEMidlet步骤:
在Eclipse工作空间的“ProjectExplorer”窗口中右击新建立项目名称,出现快捷菜单,选择菜单中“new”命令项otherJ2MEJ2MEMideletNext在“J2MEMidelet”对话框的“Name”文本框中输入Midlet的名称finish,到此完成项目程序构建默认步骤。
(3)在Eclipse工作空间的“ProjectExplorer”窗口中展开J2MEMideletSuite项目,进入src文件夹中双击打开源程序文件(后缀为.java的文件),在程序编辑窗口中编写程序代码。
7.请写出MIDlet项目程序框架结构。
答:
(1)MIDlet项目程序框架结构必须包括有一个MIDlet主类,该类中默认包含含构造方法及destoryApp()、pauseApp()、StartApp()等3个事件处理方法。
(2)构造方法用于初始化MIDlet;destoryApp()用于终止MIDlet;pauseApp()用于暂停MIDlet;startApp()用于启动MIDlet。
当设备产生相应事件时,程序会自动调用相应处理方法。
(3)J2ME应用程序必须继承MIDlet,然后重写三个事件方法。
相关的一组MIDlet可组合在一起,称为MIDletSuite。
一个或多个MIDlet可打包成一个单独的Jar文件,形成一个MIDletSuite。
每个MidletSuite中包含继承自MIDlet的类和其他辅助的类,还包含其他的资源。
第3章高级用户界面
1.什么是高级API?
什么是底层API?
答:
高级API:
主要用于编写商务应用程序,能够在不同设备之间达到高度的可移植性,高级API很少去控制程序的外观,不能访问具体的输入设备,MIDP中所有高级API类都是Screen的子类。
底层API:
能够完全控制屏幕上的元素,访问具体按键或其他输入设备,对精确位置和图像元素进行精确控制,方便了游戏类程序的设计,但可移植性差。
2.简述Display类、DisplayAble类、屏幕类功能。
答:
(1)Display类是系统显示设备管理类,提供取得设备属性和显示方法,可以认为是MIDP显示用户界面的系统级逻辑屏幕;
(2)Displayable类代表应用程序各自的逻辑屏幕,系统在同一时间内只能显示一个Displayable逻辑屏幕,用户只能和这个Displayable类交互;Displayable类中包含了Alert、Form、List、TextBox类,因此系统可以获得用户输入。
(3)本教材中屏幕类是指用来在屏幕上显示可选列表、提示信息、文本框、表单、滚动条、命令菜单等人机交互组件;其中,可选列表(List类)、提示信息(Alert类)、文本框(TextBox类)、表单(Form)继承自Screen类,而Screen类以继承自Displayable类,这类对象可以直接获得屏幕并显示,且独占整个屏幕,彼此不能同时分享屏幕显示;另外,滚动条(Ticker类)、命令菜单(Command类)则直接从Object类继承,在继承关系层次上与Displayable类同层,因此不能直接获得屏幕显示,而是借助Displayable类提供的方法附加到Displayable类对象上才能显示在屏幕上。
3.试述J2ME编程的基本步骤。
略。
参照第2章习题“6.简述构建MIDlet项目程序的步骤。
”部分答案。
4.说明MIDlet框架结构中4个主要方法的名称和功能。
略。
参照第2章习题“7.请写出MIDlet项目程序框架结构。
”部分答案。
5.简述Display类与Displayable类的区别联系。
答:
(1)Display类是系统级的逻辑屏幕,Displayable类是应用程序级逻辑屏幕,两者层次不同;
(2)一个设备只有一个系统级逻辑屏幕,可以有多个不同的应用程序级逻辑屏幕;
(3)Display类负责管理不同应用程序逻辑屏幕,可以决定哪个应用程序逻辑屏幕在前台的系统级屏幕上显示,并且只有一个应用程序逻辑屏幕能在前台显示,其余应用程序逻辑屏幕可以保存在后台等待在适当时刻显示;
(4)可以形象地认为,Display类屏幕是实际可以看到的显示设备,而不同的应用程序有各自的屏幕布局,在需要时将各自屏幕布局显示到这个设备屏幕上。
6.请简述Form类与item类型组件在编程中的关系。
答:
(1)Form类是直接从Displayable类继承来的,因此具有屏幕特性,这就意味着会独占整个屏幕;
(2)引入Form类的好处是虽然Form自己是独占整个屏幕,但它可以作为容器,包含Item类型的组件,以便进行屏幕布局。
Form类中可以包括文本域、进度条、选择组等的Item类型的组件;
(3)可以在同一个Form中提供多个Item类组件,但Item类组件不能包含于其他Item类组件,并且另一个Form中的Item类组件也不能同时显示在该Form中,如果必须在多个Form中显示同一个Item类组件,那就必须在下一个Form显示它之前,先将该Item类组件从当前Form中删除,然后才能让该组件显示在新的Form中。
7.TextBox类与TextField类在使用和功能上有何异同?
答:
TextBox是Display的子类,TextField是Form的子类。
TextBox是一个DisplayAble类,所以它的对象可以直接由Display显示,而且TextBox会占满整个屏幕。
而TextField是Item类的子类,所以TextField需要加到Form表单中才能显示,而且不独占一个屏幕。
8.试以教材p.54~56程序CommandTest.java为例说明事件处理过程中事件发生者、事件监听者及事件处理者各是哪个对象或方法?
答:
事件监听者是CommandListener,对应的事件处理方法是CommandAction。
事件的发生者是各个Command对象。
程序中:
事件发生者:
exit,setTitle,OK等3个Command对象;
事件监听者:
通过form及tb这2个Displayable对象的setCommandListener()方法添加;
事件处理者:
commandAction()方法。
9.试述Eclipse中导入已有项目步骤并应注意些什么。
答:
第一步:
将自己保存好的项目文件拷贝到电脑上,例如D:
\J2ME;
第二步:
打开Eclipse,改变工作空间路径为项目文件拷贝到电脑上的路径;
第三步:
文件—导入—常规—现有项目到工作空间—下一步—选择根目录,浏览,找到自己项目所在位置—完成;
第四步:
右击已导入的项目名—属性—J2ME—ManageDevices—重载WTK。
注意:
将自己保存好的项目文件保存在不包含中文的根目录下。
10.举例说明Eclipse中根据源程序错误提示信息导入类库的方法。
答:
点击程序代码或编辑窗口左侧边栏中红叉的地方,会出现一个下拉框,根据错误原因在下拉框中中选择相应选项即可自动修正程序中错误。
例如程序中定义一个Form对象,但没有导入相应类库,定义Form对象的语句将会出现红色错误提示标记,点击错误提示可以进行修正。
11.简述Eclipse项目中建立自定义类的步骤。
答:
在Eclipse的“ProjectExplorer”窗口中打开J2MEMideletSuite项目,在项目名称上右击,出现快捷菜单,选择“new”选项的Class子选项,出现“NewJavaClass”对话框,填写在“Name”文本框中填写自定义的类名,并可以根据需要在该对话框中进行其他设置,完成后点击“Finish”按钮,进入代码编辑窗口,创建自定义类的构造函数和其他方法。
12.简述Eclipse项目中实现接口的步骤。
答:
在Eclipse的“ProjectExplorer”窗口中打开J2MEMideletSuite项目,在项目名称上右击,出现快捷菜单,选择“new”选项的Interface子选项,出现“NewJavaInterface”对话框,填写在“Name”文本框中填写自定义的类名,并可以根据需要在该对话框中进行其他设置,完成后点击“Finish”按钮,进入代码编辑窗口,创建自定义类的构造函数和其他方法。
第4章底层用户界面
1.请从继承关系说明为什么Canvas类本质上是一种屏幕类?
Canvas类本身又是各种底层用户界面类的什么类?
(提示:
参考WTKDocumentation)
答:
(1)从继承关系来看,Canvas类继承于Displayable类,因此本质上也是一个屏幕类。
(2)Canvas类是底层界面编程基类,是一个抽象类,编程时只能继承该类,取得屏幕显示。
2.在实际编程中通常需要重写Canvas类什么方法?
应用程序是否可以直接调用这个方法?
说明能或不能直接调用的理由。
答:
在实际编程中通常需要重写Canvas类的Paint()方法;piant方法只能被系统调用,应用程序不能直接调用该方法,而且每次调用paint()方法都需要传递画图的画笔Graphics,如果用户想要调用paint()方法,只能通过调用repaint()方法间接调用Paint()方法。
3.Graphics对象主要作用是什么?
Graphics对象中绘制图形的常用方法有哪些?
答:
Graphics对象提供在Canvas上绘图的能力,绘图可以直接显示在屏幕上,也可以保存在内存中。
Graphics对象可用于绘制直线、矩形、园、椭圆等几何图形,而且中间还包括矩形、圆绘制图形的填充。
还可以绘制文本并设置颜色,字体、线条粗细等。
Graphics对象中绘制图形的常用方法有:
直线:
voiddrawLine(intx1,inty1,intx2,inty2);
矩形:
voiddrawRect(intx,inty,intwidth,intheight);
圆角矩形:
voiddrawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight);
绘制填充矩形:
publicvoidfillRect(intx,inty,intwidth,intheight);
绘制填充圆角矩形:
publicvoidfillRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight);
绘制弧线:
voiddrawArc(intx,inty,intwidth,intheight,intstart,int
angle);
绘制填充弧线:
voidfillArc(intx,inty,intwidth,intheight,intstart,intangle);
4.Font类的主要功能是什么?
它能设置哪几类字符属性?
答:
Font类直接从Object类继承,决定文本的字体和大小等属性。
它能设置字体,字型,字的大小。
Font对象用Font类的静态方法建立,该方法如下:
publicstaticFontgetFont(intface,intstyle,intsize)
该方法的参数:
intface:
表示字体,MIDP规定了3种,即Font.FACE_MONOSPACE(等宽体)、Font.FACE_PROPORTIONAL(比例体)、Font.FACE_SYSTEM(系统字体)
intstyle:
表示字型,STYLE_BOLD(粗体)、STYLE_ITALIC(斜体)、STYLE_PLAIN(常规)、STYLE_UNDERLINE(下划线)
intsize:
表示大小,SIZE_LARGE、SIZE_MEDIUM、SIZE_SMALL
5.Graphics对象绘制文本的方法是什么?
说明其参数含义。
答:
调用Graphics对象的如下方法在屏幕上绘制文本:
publicvoiddrawString(Stringstr,intx,inty,intanchor)
其中参数含义:
Stringstr:
需显示的字符串
intx,inty:
文字显示坐标
intanchor:
文字显示的水平或垂直方向对齐方式
6.Image对象的主要功能是什么?
从内存的角度来看,Image对象代表着什么样的内存区域?
答:
可以形象地认为Image对象代表“画布”(Canvas)上的图像区域。
在J2ME中,图像分成两类,一种是不可变图像,一般就是图片文件,通过Image类的静态方法publicstaticImagecreateImage(Stringname)获得Image对象,其中参数Stringname表示图像文件的路径及文件名;
另一种是可变图像,利用Image中的publicGraphicsgetGraphics()方法获得Graphics对象,再通过这个Graphics对象绘图,该方法得到一个Graphics对象,利用该对象可在内存中绘制几何图形,再利用drawImage()方法将图像显示在屏幕上。
从内存的角度来看,Image对象代表着一块与图像数据及方法对应的内存区域。
7.请分别以代码说明如何创建不变图像对象及可变图像。
答:
(1)以下面创建不可变图像代码为例通过注释方式说明该过程:
publicclassMyCanvasextendsCanvas{
protectedvoidpaint(Graphicsg){
try
{
//调用Image类的静态方法createImage打开图像文件“a.png”,//并创建与该文件对应的Image类对象image
Imageimage=Image.createImage("/a.png");
//调用Graphics类的对象g的drawLine方法直接在屏幕上画线
g.drawLine(0,50,150,50);
//调用Graphics类的对象g的drawImage方法将image按参数要求//绘制到屏幕上
g.drawImage(image,50,50,Graphics.BOTTOM|Graphics.LEFT);
g.drawImage(Image.createImage(image,20,20,40,40,Sprite.TRANS_NONE),50,50,Graphics.TOP|Graphics.LEFT);
g.drawImage(Image.createImage(image,20,20,40,40,Sprite.TRANS_MIRROR_ROT180),50,90,Graphics.TOP|Graphics.LEFT);
}
catch(IOExceptione)
{
e.printStackTrace();
}
}
}
(2)以下面创建可变图像代码为例通过注释方式说明该过程:
publicclassMyCanvasextendsCanvas{
protectedvoidpaint(Graphicsg){
//调用Image类的静态方法createImage创建Image类对象image
//该image用以绘制可变图像
Imageimage=Image.createImage(this.getWidth(),this.getHeight());
//调用image对象的getGraphics方法创建Graphics类对象gh
Graphicsgh=image.getGra
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手持 移动 设备 16 习题 答案