附录 A


演示应用程序

本附录介绍 Sun JavaTM Wireless Toolkit for CLDC 所捆绑的演示应用程序。


A.1 概述

Sun JavaTM Wireless Toolkit for CLDC 中附带的演示应用程序重点说明了仿真器支持的一些技术和 API。这些演示程序的目的是为了让用户对仿真器的 API 功能以及工具包的增强功能有一个大致了解。

表 A-1 中列出了该版本中包括的所有演示应用程序。

大多数演示程序的运行十分简单。第 A.2 节“一般说明”中包含有关运行大多数演示程序的说明。包含附加文档资料的演示程序在表 A-1 中均有链接。如果没有链接,则表明演示程序较为简单(或有自己的说明),一般的说明就足够了。

各个演示应用程序的源代码可在 toolkit/apps 目录中找到。子目录包含项目,并且每个项目均有包含 Java 编程语言源代码的 src 目录。例如,在 Windows 上,如果将工具包安装在 C:\WTK2.5.2 中,则 WMADemo 中 SMS 发件人 MIDlet (example.sms.SMSSend) 的源代码将位于 C:\WTK2.5.2\apps\WMADemo\src\example\sms\SMSSend.java 中。如第 1.1.2 节“工作目录文件”中所述,在打开项目时,会将源代码复制到您的 workdir/apps 目录中。


表 A-1 演示应用程序

演示程序

API

描述

特别说明

AdvancedMultimedia
Supplements

JSR 234 Advanced Multimedia Supplements

展示 3D 音频、混响、图像处理和相机控制。

A.3

Audiodemo

MMAPI 1.1

演示音频功能,包括混音和播放与动画配合播放的音频。

 

BluetoothDemo

JSR 82 Bluetooth

演示如何使用蓝牙进行设备搜索和数据交换。

A.4

CHAPIDemo

JSR 211 CHAPI

一种内容查看器,也使用 MediaHandler。

A.5

CityGuide

JSR 179 Location API

显示可显示当前位置路标的城市地图。

A.6

Demos

MIDP 2.0

包括各种示例:动画、颜色、网络、财务及其他。

A.7

Demo3D

JSR 184 Mobile 3D Graphics

包含演示如何在立刻模式与保留模式下使用 3D 图形的 MIDlet。

A.8

FPDemo

CLDC 1.1

简单的浮点计算器。

 

Games

MIDP 2.0

包括 TilePuzzle、WormGame 和 PushPuzzle。

 

GoSIP

JSR 180 SIP

演示使用 SIP 和 SIP 服务器时如何设置聊天

A.9

i18nDemo

JSR 238 Mobile Internationalization API

包括字符串排序、数字格式化和短语翻译器。

A.10

JBricks

JSR 229 Payment API

使用 Payment API 购买额外生命或级别的游戏。

A.11

JSR172Demo

Web 服务

演示如何使用 JSR 172 API 进行从 MIDlet 到 Web 服务的连接。

A.12

MobileMediaAPI

MMAPI 1.1

演示 MMAPI 功能,包括铃声序列、MIDI 回放、采样音频回放和视频。

A.13

NetworkDemo

MIDP 2.0

显示如何使用数据报和串行连接。

A.14

ObexDemo

JSR 82 OBEX

演示如何使用 OBEX 通过 IrDA 传输数据。

A.15

OpenGL® ES Demo

JSR 239 OpenGL® ES

显示如何使用 OpenGL® ES 创建 3D 图形。

 

PDAPDemo

JSR 75 PIM 和 FileConnection

显示如何操纵联系人、日历项以及任务项。演示如何访问本地文件。

A.16

Photoalbum

MIDP 2.0

演示各种图像格式。

 

SATSADemo

JSR 177 SATSA

演示与智能卡进行通讯以及 SATSA 的其他功能。

A.17

SATSAJCRMIDemo

JSR 177 SATSA

显示如何使用 SATSA-Java Card RMI。

A.18

SIPDemo

JSR 180 SIP

使用 SIP 交换简单消息。

A.19

SnapMobileSample

 

演示连接的社区游戏功能。

 

SVGContactList

JSR 226 SVG API

演示以不同样机显示的联系人列表。

A.20

SVGDemo

JSR 226 SVG API

展示用于渲染 SVG 的各种技术。

A.21

UIDemo

MIDP 2.0

展现 MIDP 2.0 宏广的用户界面功能

 

WMADemo

WMA 2.0

显示如何发送和接收 SMS、CBS 和 MMS 消息。

A.22


 


A.2 一般说明

可以运行并启动大多数演示应用程序,无需进行特别准备。但是,某些演示程序需要更改工具包首选项或设置。本节介绍一般步骤。

第一步是运行工具包。要执行此操作,请转至 Microsoft Windows 的“开始”菜单,然后选择“开始”>“所有程序”> "Sun Java Wireless Toolkit 2.5.2 for CLDC" > "Wireless Toolkit 2.5.2"。将显示用户界面,如图 A-1 中所示。

图 A-1 Wireless Toolkit 用户界面

默认主窗口用户界面

单击“打开项目”按钮打开演示应用程序。将显示所有可用应用程序的列表。如第 1.1.2 节“工作目录文件”中所述,安装目录中的项目以斜体显示,而工作目录中的项目以粗体显示(图1-1)。在安装目录中打开某项目时,将会在工作目录中创建一个副本,然后会打开该副本。

打开应用程序后,可以按工具栏中的“运行”按钮,或者如果需要安装在仿真器上,则单击“项目”>“通过 OTA 运行”

将打开设备仿真器窗口,显示运行中的演示应用程序。如果有 MIDlet 的菜单,请使用导航箭头选择一项,然后选择“选择”按钮。当演示程序运行时,用户可能需要按屏幕下方左侧或右侧的某个软键。用户可使用软键安装或启动应用程序、打开菜单、退出或执行某些其他操作。有一些示例包含这些说明。

某些演示程序需要特定的设置和说明。例如,如果某个演示程序使用 Web 服务并且用户位于防火墙之后,则必须配置仿真器的代理服务器设置,否则演示将失败:

有关详细的操作说明,请阅读每个演示程序的说明。


A.3 Advanced Multimedia Supplements

该 MIDlet 套件演示了 JSR 234 Advanced Multimedia Supplements (AMMS) 的功能。其包含以下 MIDlet:

图 A-2 处理 MIDlet 中的图像

图像效果 Midlet,显示的第一张飞机照片为正常效果,第二张使用了曝光效果


A.4 Bluetooth Demo

该应用程序包含演示如何使用 JSR 82 的蓝牙 API 的 MIDlet。

BluetoothDemo 项目展示如何在两个使用蓝牙的设备之间传输图像。必须运行仿真器的两个实例才能了解该演示程序是如何工作的。

在第一个仿真器中,启动 Bluetooth Demo,然后选择“服务器”。仿真器询问您是否允许进行蓝牙连接时,选择 "Yes"。服务器将启动并显示图像列表。起初,蓝牙网络中没有任何图像。要使图像可用,请选择这些图像并在菜单中选择“发布图像”(或键入或单击 1)。图标颜色将从紫色变为绿色,指示图像已发布。

图 A-3 运行 Bluetooth Demo 服务器

Bluetooth Demo 图像列表,选择了 Duke PNG

在第二个仿真器上,启动 Bluetooth Demo,然后选择“客户机”。MIDlet 会提示您,它已就绪,可进行图像搜索。单击“查找”软按钮。MIDlet 将查找另一个仿真器并从中获取图像列表。从列表中选择一个图像,然后选择“装入”。仿真器询问您是否允许连接时,选择 "Yes"。

图 A-4 使用模拟蓝牙传输的图像


A.5 CHAPIDemo

CHAPIDemo 是内容浏览器(请参见 JSR 211)。它包含一个收藏夹列表,使用户可选择和查看各种内容。

该演示程序使用内容处理器注册表,因此,使用“运行”按钮时,您无法看到其所有功能。而使用“项目”>“通过 OTA 运行”可将应用程序安装到仿真器中。如果要了解具体方法,请阅读第 2.3.2 节“安装”中的介绍。

安装 CHAPIDemo 后,它将作为文本查看器显示在应用程序列表中。CHAPIDemo 是 MIDlet,用于纯文本的内容处理器。选择文本查看器,然后从软按钮菜单中选择“启动”。将显示收藏链接列表。

图 A-5 在 CHAPIDemo 中查看收藏链接

选择了“新建”选项的 CHAPIDemo 链接列表

使用导航键高亮显示 CHAPIDemo,然后按仿真器上的“选择”按钮。应用程序将询问您是否可以使用通话时间。按“是”软按钮。将显示各种内容的列表(图 A-6)。

图 A-6 内容列表

显示要安装的媒体播放器的 CHAPIDemo 内容列表

请尝试选择一个 Duke.png。使用箭头高亮显示链接,然后按“选择”按钮查看该文件。使用 CHAPI 时,将启动 ImageViewer MIDlet 并显示内容。

图 A-7 查看 PNG 图像

显示 Duke 的 PNG 图像的图像查看器

其他类型的内容需要另一内容处理器 MIDlet 套件 MediaHandler。要从 CHAPIDemo 安装该套件,请选择 MediaHandler.jad 链接(图 A-6 中显示的列表中的第一项)。将调用 AMS 并引导您完成安装过程。

安装 MIDlet 套件后,用户即可查看文本查看器中列出的其他类型的内容。例如,选择 http:video/test-mpeg.mpg 可查看一系列图像,包括图 A-8 中显示的图像。

图 A-8 使用 MediaHandler 查看 MPEG 视频

正在查看显示黄色和红色灯的 MPEG 视频的 MediaHandler。

要查看 TextViewer 和 ImageViewer MIDlet 的内容处理器设置,请单击“设置”,然后单击“内容处理器”图标。用户可能还要检查 MediaHandler 项目。


A.6 CityGuide

CityGuide 演示如何使用 Location API (JSR 179)。它将在城市地图上显示步行者当前的位置。步行者会在城市内移动,当步行者接近路标时,路标也会高亮显示并标识。在此演示中,我们可以通过名为 citywalk.xml(事件文件)的 XML 脚本(该脚本用于提交设备位置信息)获取步行者的位置。有关完整说明,请参见第 13 章

由于时常进行位置提示,因此最好在制造商(受信任)模式下运行该演示程序,如第 6.2.1 节“MSA 保护域”中所述。在用户界面中,选择“编辑”>“首选项”,然后选择“安全”。选择安全域的制造商。

打开并运行 CityGuide 项目。在仿真器中,启动 CityGuide MIDlet。单击“下一步”查看地图页。

图 A-9 您在城市中的位置

显示您在城市中的所处位置的 CityGuide 演示

从仿真器窗口菜单中选择 "MIDlet" >“外部事件”。在“位置”选项卡上,单击浏览按钮。选择 workdir\apps\CityGuide\citywalk.xml 中的以下事件文件。

现在,位于窗口底部的播放器按钮将处于活动状态。请参见图 13-1。按绿色播放按钮(向右指的三角形)运行脚本。

显示屏将显示四种路标:餐馆、博物馆、商店和电影院。要调整路标显示,请打开软菜单,然后选择“设置”命令。请参见图 A-10。使用导航键高亮显示某一类别,然后使用“选择”按钮选中或取消选中某一项。

当用户位于路标(在地图中高亮显示)附近时,可打开软菜单并选择“详细信息”命令以查看更多信息。有关位置脚本的详细信息,请参见第 13 章

图 A-10 位置设置

位置“设置”对话框


图 A-11 路标详细信息

路标详细信息。


A.7 演示

该演示包含重点说明不同 MIDP 功能的几个 MIDlet。

A.7.1 颜色

该应用程序会显示一个较大的横向矩形,跨越整个屏幕宽度。下面有十个较小的纵向矩形,跨越整个屏幕。最下面是三个横向的颜色栏,分别表示蓝、绿和红 (RGB) 的值。根据第一个菜单选择,这些值以十进制 (0-255) 或十六进制 (00-ff) 来表示。

A.7.2 属性

该 MIDlet 显示属性值。例如,请参见图 A-12

图 A-12 系统特性

显示包括内存和 microedition 信息在内的系统特性

A.7.3 Http

该测试应用程序使用 HTTP 连接请求 Web 页面。该请求是通过 HTTP 协议 GETPOST 方法发布的。如果使用 HEAD 方法,则将从请求读取头特性。

准备运行演示

开始前,请根据如下所述检查设置:

运行演示

启动 Http MIDlet。默认情况下,MIDlet 将尝试联系 http://www.yahoo.com。要进行测试,请选择“菜单”软键,然后选择 1、2 或 3 以测试选定的 URL。

Http 测试将返回其可获取的信息。如果屏幕中显示这些信息,请使用下箭头滚动到最后。信息量取决于请求的类型以及该页所提供的 META 信息量。要提供主体信息或内容,该页必须根据 RFC 2616 中所述声明 CONTENT-LENGTH

使用菜单选项

使用“菜单”软键进行以下操作。

A.7.4 FontTestlet

该 MIDlet 显示各种可用字体:比例、常规、常规斜体、粗体常规和粗斜体。从菜单中选择 1 或 2 以在系统字体 (sans serif) 和等宽字体之间进行切换。

A.7.5 股票行情

与 Http 演示程序类似,该样例使用 HTTP 连接来获取信息。使用第 A.7.3 节“Http”中所述的准备步骤。

运行演示项目并启动 Stock MIDlet。

默认情况下,屏幕顶部将显示空的自动收录器栏。在自动收录器下方,菜单列表显示四个应用程序:Stock Tracker、What If? Alerts 和 Settings。在可以使用前三个应用程序前,必须添加股票名称。

A.7.5.1 使用设置

要使用应用程序功能,必须提供一些股票名称以供应用程序进行操作。

向自动收录器添加股票名称

要向自动收录器添加股票名称,请使用导航箭头选择“设置”。

选择“添加股票”。

显示屏中将提示用户输入股票名称。键入 SUNW 并选择“完成”软键。现在,所增加的股票及其当前价格将显示在自动收录器中。用户可再多添加一些股票名称,例如 IBM 和 HPQ。

更改更新时间间隔

默认情况下,更新时间间隔为 15 分钟。选择“更新”更改时间间隔。使用导航箭头选择以下选项之一:连续、15 分钟、30 分钟、1 小时或 3 小时。选择“完成”软键。

删除股票

选择“删除股票”。可以看到已添加的股票列表。使用导航键选择一个或多个要删除的股票。选择“完成”软键。

A.7.5.2 股票跟踪器

股票跟踪器显示已添加股票的列表及这些股票的当前价格。股票跟踪器显示有关所选股票的其他信息,例如,上次交易情况及较高价格和较低价格。

选择股票,然后按“选择”按钮。

A.7.5.3 What If?

What If? 是一种应用程序,会询问用户所持有股份的原始购买价格和股份数目。他会根据当前价格计算您的盈利或亏损。

选择股票名称。

输入购买价格和股份数目,然后按“计算”。

A.7.5.4 Alerts

该应用程序在价格更改为用户指定的值时会向用户发送通知。

从主菜单中,选择“警报”。

选择“添加”。

选择股票。屏幕将提示 Alert me when a stock reaches。输入整数。

警报置于“当前警报”列表中。要删除警报,请按“删除”,然后选择警报。选择“完成”软键。

当达到指定的价格时,用户将听到铃声并收到一条消息。例如,所选股票名称已达到价格点 $value,并且当前交易价格为 $current_value。触发警报后,该警报将从“当前警报”列表中消失。

A.7.6 证明书

这演示了在线证明书拍卖应用程序的执行方式。主屏幕顶部将显示证明书自动收录器。默认情况下,“选择乐队”字段显示 "Alanis Morrisette"。

要选择乐队,请高亮显示乐队名称,然后按“选择”按钮。使用下箭头高亮显示其他乐队(例如 moby),然后按“选择”按钮。将显示可用拍卖。

要进行竞标,请选择“菜单”软键,然后选择 2。使用箭头键逐字段进行移动。填写每个字段。选择“下一步”软键。应用程序将要求用户确认竞标。使用箭头键高亮显示“提交”,然后按“选择”按钮。用户将收到确认号。单击“乐队”返回欢迎页面。

要设置警报,请选择“菜单”软键,然后选择 3。使用导航箭头移动到字段,然后键入一个比当前竞标报价高的价格。选择“保存”软键。用户将返回欢迎页面。只要以超出警报值的价格进行竞标,就会触发警报。用户的设置决定应用程序检查更改的频率,因此可能要过几分钟才能听到警报。

要添加乐队,请选择“菜单”软键,然后选择 4。键入乐队名称或逗号分隔的名称列表。选择“保存”软键。确认后,将返回欢迎页面。所添加的乐队将显示在“选择乐队”下拉列表中。



注 - 这只是一个演示程序。要充分地描述乐队,必须编辑文件 workdir\apps\Demos\src\example\auction\NewTicketAuction.java



要删除乐队,请选择“菜单”软键,然后选择 5。导航到某个乐队,然后选择“选择”按钮标记复选框。用户可选择多个乐队。选择“保存”软键。

要显示自动收录器显示屏、更新、警报音量和日期的当前设置,请选择“菜单”软键,然后选择 6。如果需要,可使用箭头键和选择键更改这些值。选择“保存”软键。

A.7.7 ManyBalls

该 MIDlet 一开始是一个球在屏幕中滚动。使用上箭头和下箭头提高或降低球速 (fps)。使用右箭头或左箭头增大或减少球数。


A.8 Demo3D

该应用程序包含三个 MIDlet,这三个 MIDlet 展示了仿真器对 Mobile 3D Graphics API (JSR 184) 的支持。

A.8.1 Life3D

Life3D 实现了流行的三维“生命游戏”。一个立方块代表一个活细胞。每个细胞周围最多有 26 个细胞(包括对角线)。在动画的每个步骤中,如果一个活细胞周围的细胞少于 4 个,该细胞会由于孤独而死去,但若是超过了 5 个,则又会由于过度拥挤而死去。一个空细胞周围恰好有 4 个细胞时,则会变成一个新的活细胞。

游戏板的查看角度缓慢旋转,让您可以从各个角度查看游戏板。

图 A-13 三维“生命游戏”

Life3D 游戏

表 A-2 中小键盘上的按钮可控制游戏。


表 A-2 控制 Life3D

按钮

描述

0

暂停动画。

1

恢复动画的默认速度。

2

加快动画速度。

3

减慢动画速度。

4

从任意列表中选择上一预设配置。配置的名称显示在屏幕顶部。

5

从列表中选择下一预设配置。

*

随机生成一种配置并动画显示,直到其稳定或者死亡。如果它死亡,则随机生成一种新配置。


 

该示例的源代码有相当完整的文档记录。请参见 toolkit\apps\Demo3D\src\com\superscape\m3g\wtksamples\life3d\Life3D.java

A.8.2 PogoRoo

PogoRoo 向您展示一只袋鼠在娃娃跳上上下弹跳。要控制这只袋鼠,请使用箭头键。按上箭头键可以向前移动,按下箭头键可以向后移动,按左箭头键和右箭头键可以改变方向。用户可能需要按住键来观看效果。

图 A-14 弹跳的袋鼠

袋鼠跳向远处的 PogoRoo 图像

A.8.3 retainedmode

retainedmode MIDlet 会播放一个场景文件,内容显示的是一个不知疲倦的滑板手在无尽的环道中不停地滑行。

图 A-15 不知疲倦的滑板手

展示滑板手在环道中滑行的 retainedmode Midlet


A.9 GoSIP

GoSIP 是一种聊天应用程序,它使用 SIP (JSR 180) 设置使用 SIP 代理服务器和注册器的通讯。

通过运行 SIP 服务器开始。选择“文件”>“实用程序”。选择“启动 SIP 服务器”,然后按“启动”。将显示 SIP 代理服务器窗口。单击“开始”运行服务器。

接下来,通过 GoSIP 应用程序运行仿真器的两个实例。

图 A-16 SIP 代理服务器和注册器

“SIP 代理和注册器”窗口一次显示一个所列出的已注册用户

在第一个仿真器中,启动 Sippy A。当系统提示输入代理主机时,输入本地计算机的名称或 IP 地址并选择“下一步”,然后选择“注册”。在 SIP 服务器窗口中,将显示来自仿真器的 SIP 消息。Sippy A 显示在已注册用户的列表中。仿真器将建议用户邀请他的朋友 Sippy B 进行聊天。暂且不要执行此操作。

在第二个仿真器中,启动 Sippy B。与前面的一样,输入 SIP 代理的地址,选择“下一步”,然后选择“注册”。SIP 服务器窗口中将显示 Sippy B 用户。

在第一个仿真器中,选择“邀请”。第二个仿真器将指示它正响铃。选择“应答”开始聊天。两个仿真器现在均显示聊天屏幕。用户可使用“发送”命令来回发送消息。

完成后,选择“再见”结束聊天。


A.10 i18nDemo

该 MIDlet 套件展示了 JSR 238 Mobile Internationalization API。该 MIDlets String Comparator 和 Formatter 显示如何针对不同的语言环境对字符串和显示号码进行相应地排序。第三个 MIDlet (MicroLexicon) 是一个小型的短语翻译工具,如果在布拉格、海尔兹利亚、北京、米兰或其他一些地方,您需要点一杯啤酒时,它可以派上用场。



注 - Sun JavaTM Wireless Toolkit for CLDC 的默认字体不支持中文和日文。要使用这些语言,请在运行该演示之前按照以下步骤进行操作:

1. 安装支持中文或日文的 True Type 字体。
2. 修改 toolkit\wtklib\devices\skin-directory\skin.properties 以指定该字体。



要运行 MIDlet,请使用“选择”按钮高亮显示 MIDlet,然后使用右下方的按钮启动 MIDlet。

String Comparator MIDlet 演示了字符串(城市名称)的排序如何因语言环境而有所不同。启动 MIDlet。使用右下方的按钮查看菜单。单击或键入 2 选择“排序 - 默认”,然后按字母顺序对列表进行排序。单击或键入 3 选择“排序 - 斯洛伐克语”。无论顶部有没有标记,都可以轻松看出以字母 Z 开头的城市之间的区别。单击“退出”返回 MIDlet 列表。

第二个 MIDlet (Formatter) 只是针对不同语言环境的格式显示时间和数字。单击“下一步”以查看所有四个屏幕。单击“退出”返回 MIDlet 列表。

最后一个 MIDlet (MicroLexicon) 将短语从一种语言翻译成另一种语言。要从列表中选择目标语言,请使用导航箭头高亮显示“选择语言”。单击“选择”按钮查看语言下拉列表。使用导航箭头选择语言(请参见图 A-17),然后单击“选择”按钮。

图 A-17 选择目标语言

显示 MicroLexicon Midlet 并选择了意大利语

MicroLexicon 显示一列短语。高亮显示一个短语,然后按仿真器上的“选择”按钮。用户可以看到目标语言的标志以及翻译的短语。

要更改源语言,请选择“编辑”>“首选项”。单击“国际化”选项卡,然后输入有效的语言环境字符串。下次运行仿真器和 MicroLexicon 时,如果支持,说明文字将以给定的语言环境显示。例如,cs-CZ 就可行。

MicroLexicon 由 MIDlet 资源支持。要了解如何使用工具包对应用程序进行本地化,请选择“项目”>“国际化资源管理器”。由 MicroLexicon 使用的所有资源(包括文本和图像)均会显示。用户可以编辑资源并再次运行 MicroLexicon,看看有什么变化。由于资源是在运行时装入的,因此无需再次生成应用程序。

图 A-18 国际化资源管理器

显示 i18bDemo 项目目录中资源的国际化资源管理器

这些资源本身存储在 workdir\apps\i18nDemo\res\global 中。


A.11 JBricks

JBricks 是一种游戏,演示如何使用 JSR 229 Payment API。游戏本身类似于 Breakout 或 Arkanoid。在 JBricks 中,用户可购买其他生命或新的游戏级别。Payment API 将在后台处理这些细节。

要使用 JBricks 的付费功能,请使用“项目”>“通过 OTA 运行”将 JBricks 安装到仿真器中。如果要了解具体方法,请阅读第 2.3.2 节“安装”中的介绍。

要查看 JBricks 如何使用 Payment API,请从游戏的主菜单中选择 "Buy Life" 或“购买级别”。接下来,选择是购买一条生命还是以优惠价格一次购买三条生命。在下一屏幕中用户可选择付费类型。

图 A-19 选择付费类型

JBricks Payment API 演示使用信用卡适配器进行购买

使用导航箭头可以选择以“付费方式”开头的行。单击“选择”按钮查看下拉菜单中可能的信用卡适配器。使用导航箭头选择“VISA 适配器”,然后单击“选择”按钮。单击右下方的“是”以继续。

接下来,用户可以输入信用卡信息。使用任何有效的 VISA 号码(例如 4111111111111111)和有效的截止日期。

图 A-20 提供付费信息

提供样例信息的信用卡付费表单

要查看仿真器当前实例的事务,请选择 "MIDlet" >“外部事件”,然后单击“付费事务”选项卡。将显示该仿真器特定实例的事务。

图 A-21 查看事务

选择了“付费事务”选项卡的外部事件生成器

另外,用户可以查看通过工具包付费系统的所有事务。选择“文件”>“实用程序”,然后选择“付费控制台”。控制台中的事务如下:


PSP 控制台正在运行,使用电话号码 +5550001。
PSP 服务器正在 https://localhost:-1 上运行
收到来自 127.0.0.1 的付费请求
   信用卡发行者:  VISA
   信用卡类型: 0
   信用卡号: 4111111111111111
   信用卡持卡人:  Jonathan Knudsen
   功能 ID:  3_lives
   信用卡验证号 (CCV): 123
   有效负载:  null
响应 127.0.0.1
HTTP/1.1 200 就绪
内容长度: 0
付费响应:  成功
付费时间戳: 1156282954734

 


A.12 JSR172Demo

JSR172Demo 展示如何通过 MIDle 访问 Web 服务。Web 服务已经运行在某个 Internet 服务器上。如果位于防火墙之后,则必须配置仿真器的代理服务器设置。选择“编辑”>“首选项”,然后选择“网络配置”。填写代理服务器地址文件和端口号。生成并运行该示例。

JSR172Demo 包含一个名为 Server Script 的 MIDlet。请启动它并按照提示进行操作。用户可浏览模拟的新闻头条,这些新闻头条都是从 Web 服务中检索出来的。

要查看详细的内幕,请使用网络监视器。


A.13 MobileMediaAPI

MobileMediaAPI 应用程序包含四个展示工具包多媒体功能的 MIDlet。本节介绍 MIDlet,同时还包括有关如何在应用程序中使用多媒体的其他信息。

A.13.1 Simple Tones

Simple Tones 示例演示了如何使用交互合成铃声。选择一个示例,然后单击右下方的“播放”。

A.13.2 Simple Player

Simple Player 应用程序演示了仿真器音频和视频的功能范围。它包括各种格式的样例文件,并能播放仿真器永久存储或 HTTP URL 上的文件。

播放器部分使用通用的 javax.microedition.media.Player 接口。播放器显示持续时间、媒体时间以及用于运行媒体文件的控件。如果文件中有元数据,则可以在播放器中查看信息,如作者和标题。在 MIDI 文件中,如果文件中出现卡拉 OK 文本,则播放时这些文本就会显示在屏幕上。如果适用,可以在显示屏上看到图形用户界面控件。用户可通过以下方式来访问这些控件:在 Simple Player 中选择一个媒体样例,然后按“菜单”按钮查看并选择所需的命令。

选择 Simple Player,然后单击“启动”。此演示包括以下媒体样例:

另外,Simple Player 用铃声文本传输语言 (RTTTL) 来解析铃声。有关 RTTTL 的信息,请参见 http://www.convertyourtone.com/rtttl.html

Simple Player 包括通用命令集,可以控制媒体回放。可以从 Simple Player 菜单使用这些命令,有些命令还具有相关联的小键盘按钮。下表对这些命令进行了说明。


表 A-3 Simple Player 命令

命令

描述

静音/取消静音

0

关闭声音,但继续播放文件。此命令可切换到“取消静音”。

音量

* 和 #

升高或降低响度。

元数据

 

显示媒体文件提供的信息,例如,版权信息、标题以及音轨列表。

5 秒钟后停止

 

在回放过程中设置此项后,将在 5 秒钟后暂停音频播放。

速率

4 和 6

改变回放的速率。

节奏

 

提高或降低铃声序列或 MIDI 文件的节奏。

音高

向上和向下

降低或升高 MIDI 文件中的音符。

开始/停止录音

 

对音频回放进行录音。创建一个包含所录音频的文件,该文件位于仿真器运行的目录下。如果不指定文件名,则文件将被命名为 recording.wav。此命令可切换到“停止录音”。

单格放映

7 和 9

在视频文件中,一次向前或者向后跳一帧。

播放/停止

2 和选择

开始或停止媒体播放。

循环模式

 

播放完成后,立即回放音频文件。运行一次“循环模式”,播放一次音频文件。按第二次将播放文件三次。按第三次将重复播放文件。按第四次将返回到单一播放模式。

跳帧

1 和 3

向前或向后跳跃整个媒体播放进度的 5%。声轨与视频同步。

重绕

 

返回到音频回放的开始时间。

停止并重绕

5

停止回放并重绕到开始时间。

快速帮助

 

显示命令和小键盘按钮列表。


 

这些命令适用与否取决于 Simple Player 正在播放的媒体类型。此外,一些命令可以通过使用小键盘按钮来调用。下表介绍了命令的可用性、命令对应的小键盘按钮以及 MMAPI 中相关的类。

请注意,Simple Player 应用程序本身会提供包含命令及其相应小键盘按钮的短列表。只需从菜单中选择“快速帮助”命令即可。

A.13.3 Video

Video 应用程序演示了仿真器具备了怎样的播放 GIF 动画文件和捕获视频的功能。可以在装备了相机的真实设备上使用视频捕获将相机所拍摄的内容展现给用户。

GIF 动画和视频捕获可以通过 Form ItemCanvas 来实现。Video 演示程序包括所有可能性。Animated GIF - Form [jar] 将 GIF 动画显示为 Form Item。窗体中还包含一些有关回放的信息,包括当前时间。选择“快照”命令对运行中的动画拍摄快照。拍摄的快照将被放在 GIF 动画后面的窗体中。

MPEG1 应用程序从 Web 获取 MPEG,因此如果用户位于防火墙之后,则必须配置仿真器的代理服务器设置。

选择“编辑”>“首选项”,然后选择“网络配置”。选中“使用代理服务器”。填写代理服务器地址字段和端口号。对于该演示,请选择 “HTTP/1.0”。

当播放演示时,需等待几秒钟,WTK 将获取数据。MPEG1 演示分别与 Video Capture - Form 和 Video Capture - Canvas 具有相同的行为方式。

A.13.4 暂停音频测试

该 MIDlet 用于演示在暂停的 MIDlet 尚未停止其正在运行的 Player 时,Sun JavaTM Wireless Toolkit for CLDC 将如何向用户发出警告。启动 MIDlet 后,选择“播放”命令以开始播放某些音频。屏幕显示状态,“正常”或“不正常”。

从仿真器窗口的菜单中选择 "MIDlet" >“暂停”。如所预期的,MIDlet 被暂停,并且工具包控制台中不显示任何消息。从仿真器窗口的菜单中选择 "MIDlet" >“恢复”。

现在选择“不正常”命令。再次暂停该 MIDlet。在工具包控制台中,用户可看到以下警告:An active media (subtype Player) resource was detected while the MIDlet is paused. Well-behaved MIDlets release their resources in pauseApp().(在 MIDlet 暂停时检测到活动媒体 [子类型 Player] 资源。正常的 MIDlet 释放在 pauseApp() 中的资源。)

A.13.5 MobileMediaAPI 的属性

MobileMediaAPI 应用程序具有以下属性,用户可在项目设置对话框“用户定义的”选项卡中对这些属性进行修改:


表 A-4 MMAPI 专用的 MIDlet 属性的说明

属性

描述

PlayerTitle-n

要通过 Simple Player MIDlet 播放的第 n 个媒体标题的名称。

PlayerURL-n

要通过 Simple Player MIDlet 播放的第 n 个媒体标题
(即 PlayerTitle-n)的位置。

VideoTest-n

要通过 Video 应用程序播放的第 n 个媒体标题的名称。

VideoTest-URLn

要通过 Video 应用程序播放的第 n 个媒体标题
(即 VideoTest-n)的位置。


 


A.14 网络演示

该演示有两个 MIDlet:套接字演示和数据报演示。每个演示需要用户运行两个仿真器实例,以便可以模拟服务器与客户机的关系。

A.14.1 套接字演示

运行仿真器的两个实例。一个作为套接字服务器,另一个作为套接字客户机。

在第一个仿真器中,启动应用程序,然后选择“服务器端”。选择“启动”。仿真器说明演示要通过网络发送和接收数据,并询问“是否可以使用网络?”。选择 "Yes"。套接字服务器将显示一个屏幕,表明其正在等待连接。

在第二个仿真器中,启动应用程序,选择“客户机端”,然后选择“启动”。仿真器说明演示要通过网络发送和接收数据,并询问“是否可以使用网络?”。选择 "Yes"。套接字客户机将显示一个屏幕,表明其已连接到服务器。使用向下导航箭头可高亮显示“发送”框。在“发送”框中键入消息,然后选择“发送”软键。

例如,在客户机中,在 "Send" 框中键入 Hello Server(请参见图 A-22)。选择 "Send" 软键。仿真器在传送过程中会亮起蓝色灯。

图 A-22 从套接字客户机发送消息

连接到服务器的套接字客户机发送 "Hello Server" 消息。

在运行套接字服务器的仿真器上,状态如下:Message received - Hello Server。用户可使用下箭头移动到 "Send" 框,然后键入回复。例如 Hello Client, I heard you。选择 "Send"。请参见图 A-23

图 A-23 服务器显示收到的消息和要发送的消息

套接字服务器显示收到的消息并发送返回消息

返回套接字客户机,状态将显示从服务器收到的消息。在发送新的消息之前,"Send" 框中将保留发送的上一条消息。

A.14.2 数据报演示

该演示类似于套接字演示。

运行仿真器的两个实例。一个作为数据报服务器,另一个作为数据报客户机。

在第一个仿真器中,启动数据报演示,然后选择“服务器端”。选择“启动”。仿真器说明演示要通过网络发送和接收数据,并询问“是否可以使用网络?”。选择 "Yes"。最初,数据报服务器的状态为 Waiting for connection,并且“发送”框为空。

在第二个仿真器中,启动数据报演示,选择“客户机端”,然后选择“启动”。仿真器说明演示要通过网络发送和接收数据,并询问“是否可以使用网络?”。选择 "Yes"。数据报客户机的状态为:Connected to server。使用向下导航箭头可高亮显示“发送”框。在“发送”框中键入消息,然后选择“发送”软键。例如,键入 Hello datagram server。

在运行数据报服务器的仿真器上,状态显示如下:Message received - Hello datagram server。用户可使用下箭头移动到“发送”框,然后键入对客户机的回复。

在数据报客户机中,状态字段显示从服务器收到的消息。“发送”框中将保留发送的上一条消息。


A.15 ObexDemo

该应用程序展示如何使用 OBEX API 在仿真器实例之传输图像文件。该演示程序展示如何通过模拟的红外连接使用 OBEX。

运行仿真器的两个实例。一个侦听传入连接,另一个尝试发送图像。在第一个仿真器中,启动应用程序,选择 “Obex Demo”,然后选择“接收图像”。仿真器说明 OBEX 连接允许其他设备与您的设备进行通信,并询问“是否要进行连接?”。选择 "Yes"。侦听器仿真器将显示一个屏幕,表明其正在等待传入连接。

在第二个仿真器(发送方)中,启动 Obex Demo,然后选择“发送图像”。用户将看到一个图像列表。选择一个图像,然后选择“发送”。仿真器说明演示要进行传出客户机连接,并询问是否可以进行连接。选择 "Yes"。发送图像实用程序将上载图像。

在侦听仿真器中,实用程序将显示有关传入图像的信息,并询问 "Would you like to receive it?"。请参见图 A-24

图 A-24 侦听器提示接受连接

第一个仿真器接收到第二个仿真器传送的图像,并提示用户接收该图像。

选择 "Yes"。所选图像通过模拟的红外链接进行传输,并显示在第一个仿真器上。请参见图 A-25

图 A-25 已成功传输图像

第一个仿真器中收到的图像


A.16 PDAPDemo

PDAPDemo 展示如何使用 PIM 和 FileConnection API,二者均为 JSR 75 规范的一部分。

A.16.1 浏览文件

要运行文件浏览器,用户需要向 MIDlet 授予相应的安全授权(如果尚未授权)。选择“编辑”>“首选项”。单击“安全”选项卡。将安全域更改为最大值,然后按“确定”。

现在将打开并运行 PDAPDemo 项目。启动 FileBrowse MIDlet。用户将看到一个目录列表,可以从中浏览可用的目录和文件。默认情况下,只有一个目录 root1

图 A-26 浏览文件

显示 root1 目录的 FileBrowser Midlet

选择目录,然后按“选择”按钮输入该目录。

图 A-27 root1 目录的内容

显示 root1 目录内容的 FileBrowser Midlet

使用演示程序中的命令,可以查看文件或其属性。请尝试选择文件,并从菜单中选择“属性”或“查看”。

图 A-28 查看文件内容和文件属性

左侧图像中显示自述文件特性,右侧图像中显示自述文件内容

假设使用的仿真器样机是 DefaultColorPhone,那么实际文件就位于 workdir\appdb\DefaultColorPhone\filesystem 中。可以根据需要添加文件和根目录,它们对于 JSR 75 File API 将是可见的。有关更多信息,请参见第 10 章

A.16.2 PIM API

JSR75 PIM APIs 示例演示如何访问个人信息,如联系人列表、日历和任务列表。启动此示例后,从主菜单中选择列表类型。

在该示例应用程序中,各列表类型的工作方式相同,且每个列表类型只包含一个列表。例如,如果选择 "Contact Lists",则只有一个名为“联系人”的联系人列表。"Event Lists" 中只包含一个名为“事件”的列表;"To Do Lists" 中只包含一个名为“任务”的列表。

图 A-29 选择列表类型

PIM API 提示用户选择某一种列表类型:"Contact Lists"、"Event Lists" 或 "To-do lists"

选择列表类型和特定列表后,即可查看列表中所有的项。如果是第一次运行该示例,则列表可能是空的。

要添加项,请从菜单中选择“新建”。应用程序提示用户为该项输入一个格式化名称。用户可使用菜单中的“添加字段”为该项添加更多数据字段。将看到一列字段名称。选择一个字段,然后输入该新字段的值。

图 A-30 添加联系人字段

为联系人列表输入的 PIM 项

要保存列表项,请从菜单中选择“提交”(选项 3)。

可通过选择 "Back" 命令返回列表。用户可在列表中看到刚创建的项。

创建的项以标准的 vCard 或 vCalendar 格式存储在 workdir\appdb\skin\pim 目录中。有关更多信息,请参见第 10 章

PIM API 允许以标准格式导出联系人、日历和任务项。具体的格式根据列表类型而定。在查看任一列表中的项时,菜单中将包含用于查看导出项的命令。

例如,查看联系人列表项时,菜单中包含“显示 vCard”。选择此命令后,导出的项就会显示在屏幕上。日历项以及任务项都以 vCalendar 格式导出。


A.17 SATSADemos

SATSADemos 包括 Security and Trust Services API (SATSA) 的演示程序。大多数演示程序展示了如何与智能卡进行通讯。仿真器可使用套接字协议与模拟的智能卡进行通讯。工具包包括智能卡仿真器 (cref)。有关详细信息,请参见第 14 章

以下部分对该演示中的每个菜单选择进行了说明。对于每个演示,请确保在启动仿真器之前执行以下操作:

A.17.1 APDUMIDlet

该 MIDlet 演示了如何使用应用程序协议数据单元 (APDU)(小型数据包)与智能卡进行通讯。APDUMIDlet 应找到两个模拟的智能卡。用户可使用作为 Java Card Development Kit 一部分的 cref 运行智能卡仿真器。

Mohair 应用程序包括可以与 cref 一起使用的预生成内存映像。内存图像包含可与 Mohair 交互的 Java Card 应用程序。内存图像位于 Mohair 项目的根目录中。

在 Windows 上,根据如下所示启动 cref 的两个实例,每个模拟卡插槽对应一个实例(假设当前目录为 toolkit 安装目录):

start bin\cref -p 9025 -i apps\SATSADemos\demo2.eeprom
start bin\cref -p 9026 -i apps\SATSADemos\demo2.eeprom

在 Linux 上,可以使用:

toolkit/bin/cref -p 9025 -i apps/SATSADemos/demo2.eeprom
toolkit/bin/cref -p 9026 -i apps/SATSADemos/demo2.eeprom

请注意,端口号(在此例中为 9025 和 9026)必须符合在 SATSA 首选项中指定的端口号,如第 14 章中所述。另外,请确保使用 demo2.eeprom 的正确路径。

这两个智能卡仿真器运行后,用户可以运行 APDUMIDlet

A.17.2 SATMIDlet

SATMIDlet 演示了与 APDU 通讯稍有不同的智能卡通讯。

要设置模拟智能卡,请使用 cref,与对 APDUMIDlet 所执行的操作非常类似。这次用户不必指定端口号,并且内存图像有所不同:


对于 Windows 系统:

start bin\cref -i apps\SATSADemos\sat.eeprom

对于 Linux 系统:

toolkit/bin/cref -i apps/SATSADemos/sat.eeprom


 

智能卡仿真器运行后,用户可运行 SATMIDlet 与智能卡应用程序进行通讯。

A.17.3 CryptoMIDlet

CryptoMIDlet 演示了 SATSA 的常规加密功能。它与智能卡之间不会以任何方式进行交互。

A.17.4 MohairMIDlet

MohairMIDlet 有两个功能。第一个功能是查找插槽,显示所有可用的卡插槽。每个插槽都有一个后跟 ‘C’ 或 ‘H’ 的数字,表示该插槽是冷插拔还是热插拔。查看插槽后,请选择“返回”返回到第一个屏幕。

MohairMIDlet 的第二部分是 SATSA-PKI 签名测试,使用智能卡生成数字签名。与前面的演示程序一样,用户需要通过正确的内存图像运行 cref,以便准备与 MohairMIDlet 进行连接。在安装目录中键入以下内容:


对于 Windows 系统:

start bin\cref -i apps\SATSADemos\sat.eeprom

对于 Linux 系统:

workdir/bin/cref -i apps/SATSADemos/sat.eeprom


 

在仿真器中,高亮显示 SATSA-PKI 签名测试,然后选择“选择”按钮。将显示以下确认消息:

This certificate will be used: MohairAuth

选择“确定”软键。

对于 PIN 1,请键入:1234

选择“确定”软键。将显示以下确认消息:

This string will be signed: JSR 177 Approved

选择“确定”软键。将显示以下确认消息:

This certificate will be used: MohairAuth

选择“确定”软键。

对于不可否认性键 1 PIN,请键入:2345


A.18 SATSAJCRMIDemo

该应用程序包含一个 MIDlet (JCRMIMIDlet),它展示了如何使用 Java Card RMI(卡友好远程对象协议)与卡应用程序进行通讯。与 SATSADemos 中的某些 MIDlet 一样,用户需要使用相应的内存图像启动 cref


对于 Windows 系统:

start bin\cref -p 9025 -i apps\SATSADemos\demo2.eeprom

对于 Linux 系统:

workdir/bin/cref -i apps/SATSADemos/demo2.eeprom


 

现在,运行 JCRMIMIDlet 以查看应用程序如何与卡上的分布式对象进行通讯。


A.19 SIPDemo

该应用程序是使用 SIP (JSR 180) 在两个设备之间直接进行通讯的简单示例。通常,设备会使用具有代理服务器的 SIP 来设置某种直接的通讯。有关代理的更完整示例,请查看 GoSip

要查看 SIPDemo 如何工作,请运行仿真器的两个实例。在第一个仿真器中,选择“接收消息”。可以使用默认端口 5070,然后选择“接收”。第一个仿真器现在将侦听传入消息。

在第二个仿真器中,选择“发送消息”。填写收件人、端口号、主题和消息的值,或接受默认值,然后选择“发送”。用户的消息将显示在第一个仿真器中。第一个仿真器的响应将显示在第二个仿真器中。

请在打开网络监视器后再次尝试。用户可在网络监视器 "SIP" 选项卡中查看仿真器之间的通讯。


A.20 SVGContactList

该应用程序使用不同的样机来显示相同的联系人列表信息和新闻标题。这些样机有不同的颜色和字体。

选择 "SVGContactlist(skin 1)" 或 "SVGContactlist(skin 2)",然后单击“启动”。

使用上箭头和下箭头在联系人列表中进行导航。高亮显示的名称将标有特殊字符(> 或圆点),并以较大的字体显示。

图 A-31 使用样机 2 显示联系人列表

使用样机 2 以斜体显示的联系人

按“选择”按钮查看高亮显示的名称的详细信息。

图 A-32 联系人列表详细信息

联系人列表详细信息

再次按“选择”按钮返回到联系人列表。


A.21 SVGDemo

该套件包含 MIDlet,演示了 JSR 226 Scalable 2D Vector Graphics API for J2ME 的不同使用方式。该 API 提供了装入、操纵、渲染和播放 SVG 内容的多种方法。

Scalable Vector Graphics (SVG) 1.1 规范定义了用于描述 XML 格式的二维图形的语言。可在网址 http://www.w3.org/TR/SVG11/ 获取完整规范。

SVG Tiny (SVGT) 属于 SVG 的一部分,适用于诸如移动电话等小型设备。请参见 http://www.w3.org/TR/SVGMobile/。SVG Tiny 是功能强大的压缩 XML 格式,用于描述丰富的交互式二维动画内容。图形元素可以通过 SVG 标记进行逻辑分组和标识。

A.21.1 SVG 浏览器

SVGBrowser MIDlet 显示位于电话文件系统中的 SVG 文件。运行该演示之前,请在目录 workdir\appdb\DefaultColorPhone\filesystem\root1 中放置 SVG 文件。

启动演示。应用程序将显示 root1 的内容。选择 SVG 文件,然后选择“打开”软键。

A.21.2 渲染 SVG 图像

“渲染 SVG 图像”将装入文件中的 SVG 图像并渲染该图像。查看演示代码就会看出图像大小是即时调整,以准确符合显示区域。输出十分清晰准确。

A.21.3 播放 SVG 动画

该应用程序播放一段描述万圣节贺卡的 SVG 动画。按 8 播放,按 5 开始,按 0 停止。如果按 8,请按 5 恢复动画。如果按 0,请按 5 从头开始播放动画。

SVG 文件描述各种图像元素是如何随时间变化以构成该动画短片的。

在以下代码样例中,使用 JSR 226 javax.microedition.m2g.SVGImage 类装入了 SVG 资源,javax.microedition.m2g.SVGAnimator 类就可以处理所有复杂的 SVG 动画,并提供播放动画的 java.awt.Componentjavax.swing.JComponentSVGAnimator 类提供了播放、暂停和停止动画的方法。


import javax.microedition.m2g.ScalableGraphics;
import javax.microedition.m2g.SVGImage;
 
...
String svgURI = ...;
SVGImage svgImage = (SVGImage) SVGImage.createImage(svgURI, null);
SVGAnimator svgAnimator = SVGAnimator.createAnimator(svgImage);
 
// If running a JSE applet, the target component is a JComponent.
JComponent svgAnimationComponent = (JComponent) svgAnimator.getTargetComponent();
...
 
svgAnimator.play();
...
svgAnimator.pause();
...
svgAnimator.stop();

 

A.21.4 从头开始创建 SVG 图像

该演示使用 API 调用生成图像。其会创建空 SVGImage,然后使用图形内容填充该 SVGImage,然后显示该内容。

A.21.5 弹力球

“弹力球”将播放一段 SVG 动画。按 8 播放,按 5 开始,按 0 停止。如果按 8,请按 5 恢复动画。如果按 0,请按 5 从头开始播放动画。

A.21.6 优化的菜单

在该演示中,选择的图标将显示黄色边界。移动到新图标后,该图标将变为选定状态,并且上一个图标将变为未选定状态。如果导航出图标格线,选择将进行循环。也就是说,如果选择了行中的最后一个图标,则向右移动会选择同一行中的第一个图标。

该演示演示了将 UI 标记与 Java 相结合所带来的灵活性:丰富的功能集(图形、动画和高端二维渲染)和在图形操纵、预渲染或播放方面的灵活性。

在此例中,图形艺术家提供的 SVG 动画定义了菜单图标的转换状态(从未选定状态变为选定状态)。该程序使用 JSR 226 API 将每个图标的动画序列分别渲染到后台屏幕缓冲区中(用于以后进行快速渲染)。

通过进行缓冲,MIDlet 可以适合设备显示屏的分辨率(因为图形是以 SVG 格式定义的),并仍保持位图渲染速度。另外,MIDlet 还会使用 SVG 的动画功能。

定义菜单项外观及其动画效果的任务(图形艺术家和设计师的工作)和显示菜单并根据菜单选择开始操作的任务(开发者的工作)划分极为清楚。只要艺术家和开发者都遵守 SVG 文档结构约定,这两项任务便可独立区分。

A.21.7 图像装饰器

在该演示中,用户可使用电话键向照片中增加装饰。键值为:


1

缩小健

2

下一张图像键

3

扩大键

4

帮助键

5

水平翻转键

6

垂直翻转键

7

逆时针旋转键

8

上一张图像键

9

顺时针旋转键

#

显示检出器选项


 

该演示提供了 16 个图像供用户进行装饰。

使用 2 和 6 键前后翻页来查看照片。

要装饰照片,请按 # 键显示检出器。使用箭头键高亮显示图形对象。将扩大高亮显示的对象。按“选择”按钮选择当前图形或按箭头键以高亮显示其他图形。再次按“选择”按钮向照片中添加图形。添加装饰后,用户可在图形上看到红色的 +。这表示已选择该图形,并可移动、操纵该图形以及调整图形大小。

图 A-33 使用精选语录装饰图像

印有 Duke 装饰的 Duke 杯、胡须和精选语录的图片。

使用导航箭头移动图形。使用 1 缩小图形,使用 3 扩大图形。使用 5 或 6 翻转,使用 7 或 9 旋转。对图形位置满意后,请按“选择”按钮。请注意,将显示绿色的三角形。这是光标。使用导航键在图像周围移动绿色三角形。当光标移动到对象上时,将使用一个红色框高亮显示该对象。按“选择”按钮。红色的 + 表示已选定该对象。

图 A-34 高亮显示的胡须

印有 Duke 装饰的 Duke 杯、语录和高亮显示的胡须的图片。

要删除装饰(属性),请选择对象,然后单击“菜单”软键。按 2 删除属性。

A.21.8 定位服务

启动应用程序。将显示闪现屏幕(还用作帮助)。初始视图是旧金山漫步的路线地图。海湾(蓝色)位于屏幕右侧。按 1 开始以下路线。应用程序将放大用户在地图上的位置。路线指引将显示在水平轴上的白色框中。路线运行时,按 7 逆时针旋转地图。请注意,地图将旋转并且文字现在将显示在垂直轴上。再次按 7 恢复默认方位。按 4 显示帮助屏幕。

图 A-35

根据位置显示提示


A.22 WMADemo

该应用程序展示如何发送和接收 SMS、CBS 和 MMS 消息。Sun JavaTM Wireless Toolkit for CLDC 提供了灵活的仿真环境来支持消息传送。可以在仿真器实例之间交换消息,并可使用 WMA 控制台实用程序生成或接收消息。

因为该示例使用推送注册表,因此仅通过使用“运行”按钮无法查看所有功能。使用“通过 OTA 运行”功能可将应用程序安装到仿真器上,该安装过程与在真实设备上安装应用程序的过程相同。如果要了解具体方法,请阅读第 2 章中的介绍。

要练习如何推送注册表,请使用 WMA 控制台向仿真器发送消息。通过选择“文件”>“实用程序”启动控制台。单击 WMA 框中的“打开控制台”按钮启动 WMA 控制台。

单击 WMA 控制台窗口中的“发送 SMS...”按钮。选择仿真器对应的号码(如 +5550000),如果不能确定仿真器使用的号码,可以在标题栏中找到。在 SMS 消息窗口中选择号码,然后填写端口号 50000。在“消息”字段中键入文本消息,然后单击“发送”。

图 A-36 发送文本消息

选择了“文本 SMS”选项卡的“发送消息 - SMS”对话框

仿真器将询问是否可以启动 WMADemo 应用程序。

图 A-37 推送注册表消息

WMADemo 询问是否可以将其启动。

选择 "Yes"。SMSReceive MIDlet 启动并立即显示传入的 SMS 消息。

图 A-38 传入消息文本

传入文本消息样例

用户还可以使用 WMA 控制台发送和接收 CBS 和 MMS 消息。有关更多信息,请参见第 7 章



注 - 如果尝试使用 WMA 控制台向 WMADemo 发送文本消息,请确保将端口号指定为 50000,并将端口 50001 用于 CBS 消息。对于 MMS 消息,请将 example.mms.MMSDemo 用作应用程序 ID。



例如,要从 WMA 控制台向仿真器发送 MMS 消息,请确保已经按照上述说明使用“通过 OTA 运行”安装了 WMADemo。启动演示,然后选择“MMS 接收”。

在 WMA 控制台中,单击“发送 MMS...”打开 MMS 编写窗口。填写消息主题、应用程序 ID example.mms.MMSDemo 以及正在运行的仿真器的电话号码。

图 A-39 填写 MMS 消息地址

选择了“标题”选项卡的“发送消息 - MMS”窗口 在“标题”选项卡中提供地址。

接下来,单击“部分”选项卡。WMA 控制台允许您从硬盘选择要作为 MMS 消息的一部分进行发送的文件。单击“添加”向消息中添加文件。使用文件浏览器查找想要发送的文件,然后单击“确定”。

图 A-40 向 MMS 消息中添加部分

选择了“部分”选项卡的“发送消息 - MMS”窗口 显示“文件”、“内容-位置”、“内容-ID”、“Mime 类型”、“编码”和“大小”的字段。

单击“发送”发送消息。

仿真器将询问是否可以启动 WMADemo。单击 "Yes"。显示图像及其信息。

图 A-41 WMADemo 接收图像

WMADemo 显示接收的 sargent-millet.png 图像