第 2 章 |
|
本章介绍如何定义仿真器样机。您可以修改仿真器的现有样机或为其创建新的样机。此过程即为设置仿真器样机。
仿真器样机由一个属性文件定义。每个样机属性文件均包含在 toolkit\wtklib\devices 下自己的子目录中,其中 toolkit 是 Sun Java Wireless Toolkit for CLDC 的安装目录。属性文件的名称与目录名称相同。
例如,DefaultColorPhone 样机由 toolkit\wtklib\devices\DefaultColorPhone 目录中的 DefaultColorPhone.properties 定义。
样机属性文件定义仿真器样机的外观和行为。包括指向图像和声音的指针,这些图像和声音文件可以在相同目录中,也可以不在相同目录中。例如,DefaultColorPhone 目录包含电话的图像,而 DefaultColorPhone 的图标和声音则在 wtklib\devices\Share 中定义。
本章其余部分介绍样机属性文件的内容。该属性文件是纯文本文件。您可以使用任何文本编辑器对其进行修改。通常,属性文件中的条目都有一个属性名,其后有一个属性值。属性名与值之间用冒号或等号分隔。以井号 (#) 开始的行是注释行。
如果目录命名为 NewSkin,则将其属性文件重命名为 NewSkin.properties。
2. 高亮显示图像表示设备中的所有按钮都处于高亮显示状态,就像用户将鼠标置于按钮上时显示的那样。
每个图像都显示完整的设备。工具包使用这些图像的各部分来显示按钮高亮显示和按钮按下。
例如,在图 2-1 中显示了 DefaultColorPhone 中的这三种图像。
图 2-1 DefaultColorPhone 的常规图像、高亮显示图像以及按下图像
图 2-2 中显示每个小键盘某一部分的放大图像,您可以看到三种图像的不同之处。
图像文件可以是 PNG、GIF 或 JPEG 格式。所有的图像文件都要使用相同的尺寸。例如,DefaultColorPhone.properties 具有以下条目:
屏幕反映真实设备的显示内容。由整个屏幕边界、可绘画边界和决定诸如颜色数目等因素的其他参数定义。
整个屏幕边界是指全部显示区域。定义方式为从左上角图像文件原点 (0,0) 算起的长宽像素来计算。
大多数设备无法使 MIDP 应用程序使用全部显示区域。屏幕的其余部分通常用于显示图标和各种指示器。同样,Sun Java Wireless Toolkit for CLDC 仿真器允许您定义整个屏幕的子集,即可绘画区域,该区域可供 MIDP 应用程序使用。可绘画区域的原点以相对于屏幕左上角的坐标表示。例如,DefaultColorPhone 仿真器样机使用顶栏显示图标,而使用底栏显示软标签和其他图标,如图 2-4 所示。
请注意,x 和 y 坐标相对于屏幕位置。另外,screenPaintableRegion 的宽度和高度值不能超过 screen.width 和 screen.height 相对应的值。
注 - 对于全屏模式(在 MIDP 2.0 及更高版本中),仿真器可以使用从可绘画区域原点到屏幕右下角之间的区域。在 DefaultColorPhone 中,是指除顶栏外的整个屏幕区域。 |
仿真器样机属性文件决定屏幕支持的颜色数目以及像素高宽比。iscolor 可以指定仿真器样机使用彩色还是灰度级。
colorCount,用于指定可用颜色的数目。对于灰度级设备则用于指定灰度级别数:
例如,DefaultColorPhone 的彩色屏幕为 4096 色:
isColor=true
colorCount=0x1000
该值用于确定 Gamma 修正。值 1 表示不进行任何错误修正。
screenBorderColor 指定屏幕中不可绘画区域的背景颜色。例如,DefaultColorPhone 使用以下颜色:
screenBorderColor=0xb6b6aa
Sun Java Wireless Toolkit for CLDC 仿真器支持使用图标,这些图标是用于向用户传递信息的小图像。通常情况下,图标位于屏幕上的可绘画区域之外。仿真器实现了一个固定的图标集,如表 2-1 所示。
可以定义图标的位置(相对于屏幕原点进行测量)、默认状态以及与可能的状态相对应的图像列表。例如,下面是对 DefaultColorPhone 中 down 图标的定义,该图标是一个下指箭头,当显示的列表或表单高度超过可用屏幕空间时,就会出现该图标:
icon.down: 113, 314, off
icon.down.off:
icon.down.on: ../Share/down.gif
第一行指定图标显示时的位置,对于 DefaultColorPhone,图标显示时位于底栏中央、可绘画屏幕区域之外。默认状态为 off。
没有与 off 状态相对应的图像文件,而 on 状态使用 wtklib\devices\Share 目录中的 down.gif 图像。
icon.inmode: 113, 2, off
icon.inmode.off:
icon.inmode.ABC: ../Share/ABC.gif
icon.inmode.abc: ../Share/abc_lower.gif
icon.inmode.123: ../Share/123.gif
icon.inmode.kana: ../Share/kana.gif
icon.inmode.hira: ../Share/hira.gif
icon.inmode.sym: ../Share/sym.gif
仿真器的另外一个类似图标的部分是网络指示器。网络指示器不在屏幕中显示,而是显示在仿真器样机上。在 DefaultColorPhone 中,网络指示器是显示在仿真器样机左上角的一个小绿灯。网络指示器由两个属性进行定义:
例如,在 DefaultColorPhone 中,网络指示器如下所示:
仿真器使用的字体在样机属性文件中定义。实际上,您可以定义 MIDP 的 Font 类中可用的每个字型、字体样式和字体大小。格式如下:
font.face.style.size: font-specifier
您可以推测 MIDP Font API 中的字型、字体样式和字体大小参数,但是标识符在仿真器样机属性文件中是以小写字母表示。字型为 system、monospace 或 proportional,字体样式为 plain、bold 或 italic,字体大小为 small、medium 或 large。
字体说明符遵循 Java Platform, Standard Edition (Java SE) java.awt.Font 类库中列出的约定。DefaultColorPhone 中的以下示例定义了三种字体大小的成比例斜体字体:
font.proportional.italic.small: SansSerif-italic-9
font.proportional.italic.medium: SansSerif-italic-11
font.proportional.italic.large: SansSerif-italic-14
您需要指定一个默认字体,以便在没有其他定义时使用该字体。在 DefaultColorPhone 中,使用的默认字体大小为 10 磅,字体为 SansSerif:
font.all.underline.enabled=false
除了使用系统字体之外,您还可以选择使用位图字体。位图字体只是一个包含某种字体的字符形状的图像。位图字体图像是一行文本,包含某一种字符形状。要定义位图字体,请使用以下属性:
font.name=font-property-file
图像文件可以为 PNG、GIF 或 JPEG 格式。它必须包含一行字符。为便于查看,图 2-5 显示了两行字符。
高度、上升高度、下降高度和行距均以像素为单位指定。如果您不熟悉这些字体术语,请参阅 java.awt.FontMetrics 的 Java SE 文档。
字体属性文件还必须包含 ASCII 字符代码与像素在图像内的水平偏移量间的映射列表。在以下示例中,ASCII 代码 65 被映射到水平偏移量 124:
softbutton.n=x, y, width, height, font-alias, alignment
其中,alignment 的有效值为 left、right 以及 center。
例如,以下属性向工具包指明对软按钮标签使用 12 磅的 Courier 字体:
首先,定义字体别名 softButton。第一个标签为左对齐,第二个标签为右对齐。
MIDP 警报都有相应的声音。在 Sun Java Wireless Toolkit for CLDC 仿真器中,声音使用文件定义,对于 MIDP AlertType 类中列举的每种类型都有一个相应的文件。仿真器可以使用由底层 Java SE 实现支持的任何声音文件类型。在 Java SE Development Kit 1.5 中,包括 AIFF、AU、WAV、MIDI 以及 RMF。例如,在 DefaultColorPhone 中有如下定义:
alert.alarm.sound: ../Share/mid_alarm.wav
alert.info.sound: ../Share/mid_info.wav
alert.warning.sound: ../Share/mid_warn.wav
alert.error.sound: ../Share/mid_err.wav
alert.confirmation.sound: ../Share/mid_confirm.wav
vibrator.sound: ../Share/vibrate.wav
仿真器样机的介绍分为两个部分。第一部分是上文中介绍的仿真器样机外观。第二部分定义用户输入在仿真器中是如何进行映射的。
键盘处理程序接收按钮的按压,并在仿真器中执行相应的操作。例如,如果您使用鼠标按下某个软按钮,则键盘处理程序就在仿真器中执行相应的操作。
键盘处理程序定义了一组标准按钮名称,您将在定义按钮时用到它们。您只需向仿真器指明按钮在样机中的位置,其余的事情则由键盘处理程序来处理。
Sun Java Wireless Toolkit for CLDC 仿真器包括两个键盘处理程序,一个用于具有 ITU-T 小键盘的电话设备 (DefaultKeyboardHandler),另外一个用于具有全标准键盘的设备。例如,DefaultColorPhone 中包括该键盘处理程序属性:
keyboard.handler = com.sun.kvem.midp.DefaultKeyboardHandler
DefaultKeyboardHandler 能识别下列标准按钮名称:0 到 9、POUND、ASTERISK、POWER、SEND、END、LEFT、RIGHT、UP、DOWN、SELECT、SOFT1、SOFT2、SOFT3、SOFT4、USER1 到 USER10。
keyboard.handler = com.sun.kvem.midp.QwertyKeyboardHandler
QwertyKeyboardHandler 支持与 DefaultKeyboardHandler 相同的按钮,同时还包括标准键盘上的按钮,如字母键、Shift 键和 Alt 键。
按钮使用名称和一组坐标来定义。如果提供两组坐标,则可定义矩形按钮。如果提供两组以上坐标,则可使用多边形区域定义按钮。
按钮区域以设备样机图像上的相对位置来定义。当用户将鼠标移至某个已定义的按钮区域时,即显示样机高亮显示图像中的相应区域。如果用户按下某个按钮,即显示样机按下图像中的相应区域。
按钮本身并无特别值得关注之处。它们只是将按钮名称与某个矩形或多边形区域相关联罢了。将按钮名称映射到仿真器中的某项功能是由键盘处理程序完成的。2.3.3, 为按钮指定台式机键盘键介绍了如何将台式计算机键盘上的键映射到按钮。
66, 605
110, 606
140, 636
120, 647
70, 637
按钮可以与一个或多个台式机键盘键建立关联。也就是说,您可以使用台式机键盘控制仿真器,无需在设备样机上移动鼠标并按下鼠标按钮。
例如,DefaultColorPhone 允许您在台式机键盘上按下 F1 键模拟左软按钮。左软按钮在属性文件中定义为 SOFT1,如下所示:
key.SOFT1 = VK_F1
这些键定义实际上是虚拟键盘代码 (virtual key code),在 Java SE java.awt.event.KeyEvent 类库中进行定义。有关详细信息,请参见 Java SE 文档。
如果您愿意,可以为某个按钮指定多个台式机键盘键。在下面的 DefaultColorPhone 示例中,台式机键盘上的 5 键或数字键盘上的 5 键都被定义为仿真器样机上按钮 5 的快捷键:
key.5 = VK_5 VK_NUMPAD5
游戏操作已在 DefaultKeyboardHandler 中进行定义,但是您也可以用 QwertyKeyboardHandler 指定自己的游戏操作。使用如下格式:
game.function = button-name
可以为 LEFT、RIGHT、UP、DOWN 和 SELECT 功能中的任意一种。标准按钮名称已经在本章前面进行了介绍。
使用 QwertyKeyboardHandler,您可以指定按钮按下(包括单独按下按钮和使用 Shift 或 Alt 组合健按下按钮)时生成的字符。
keyboard.handler.qwerty.button = 'base-character' 'shift-character' 'alternate-character'
其中基本字符是该按钮正常情况下生成的字符,Shift 字符是在按住 Shift 键的同时按下该按钮时生成的字符,Alt 字符是在按住 Alt 键的同时按下该按钮时生成的字符。
keyboard.handler.qwerty.A = 'a' 'A' '?'
命令是 MIDP 规范的一部分。这种灵活的方式可以指定用户需要的操作,而无需要求具体设备应该如何使操作变为可用。
一般来说,MIDP 设备使用软按钮来调用命令。命令文本显示在屏幕上,位于软按钮附近。如果命令数量多于可用的软按钮数量,则实现会将一个软按钮标签显示为菜单。按下菜单软按钮会显示一个包含可用命令的菜单。
根据 javax.microedition.lcdui.Command 中指定的命令类型,Sun Java Wireless Toolkit for CLDC 仿真器允许您指定特定类型命令出现的位置。例如,在具有两个软按钮的仿真器样机上,您可能希望 BACK 和 EXIT 命令始终出现在左软按钮上,而 OK 命令出现在右软按钮上。
command.keys.BACK = SOFT1
command.keys.EXIT = SOFT1
command.keys.CANCEL = SOFT1
command.keys.STOP = SOFT1
command.keys.OK = SOFT2
command.keys.SCREEN = SOFT2
command.keys.ITEM = SOFT2
command.keys.HELP = SOFT2
通过指定其他按钮名称,您可以为特殊的命令类型指定其他首选按钮。例如,下面一行代码向仿真器指明将 BACK 命令映射到 END(如果可用),或映射到 SOFT1。
command.keys.BACK = END SOFT1
最后,如果您愿意,可以指定软按钮只用于特定命令类型。以下定义可以限制 SOFT1 键只用于命令类型 BACK、EXIT、CANCEL 以及 STOP。
command.exclusive.SOFT1 = BACK EXIT CANCEL STOP
可用的软按钮数量少于命令数量时,会将命令放置在一个菜单中。Sun Java Wireless Toolkit for CLDC 仿真器提供对命令菜单的控制。您可以选择用于显示该菜单的按钮,也可以选择用于切换各菜单项的按钮,还可以选择为菜单显示的文本标签。
command.menu.activate = SOFT2
默认情况下,UP 和 DOWN 按钮用于切换菜单项,而 SELECT 按钮则用于选择命令。您可以使用下列属性更改这些指定:
MIDP 规范允许随时暂停应用程序 (MIDlet),例如,对诸如外来呼叫等其他电话事件做出响应。
您可以使用仿真器样机属性文件定义暂停和恢复 MIDlets.DefaultColorPhone 的台式机键盘快捷键,例如使用 F6 暂停,使用 F7 恢复:
touch_screen=[true|false]
如果仿真器样机确实具有触摸屏,指针事件将被发送给 Canvases。
语言环境是指拥有相同语言、习俗或文化传统的地理位置、行政区域或社区。在软件中,语言环境是文件、数据和代码的集合,它包括使软件适应特定地理位置所必需的信息。
某些操作对语言环境较敏感,需要有指定的语言环境才能使信息与用户相适应,例如:
microedition.locale: locale-name
语言环境名称由两部分组成,用破折号 (-) 进行分隔,例如,en-US 是针对英语/美式英语指定的语言环境,而 en-AU 是针对英语/澳大利亚英语指定的语言环境。
第一部分是有效的 ISO 语言代码。这些代码是 ISO-639 定义的两个小写字母代码,可以在很多站点上找到这些代码的完整列表,例如:
http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt。
第二部分是有效的 ISO 国家/地区代码。这些代码是 ISO-3166 定义的两个大写字母代码,可以在很多站点上找到这些代码的完整列表,例如:
http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html。
CLDC 中的输入和输出 API 使用命名的字符编码,可以在 8 位字符与 16 位 Unicode 字符之间转换。特定的 MIDP 实现可以仅选择一个小编码集供 MIDlet 使用。
在仿真器中,默认编码是所在平台的默认编码。您的仿真器可能使用其他编码,如 UTF-8 和 UTF-16(假设可以在 Java SE 平台中使用这些编码)。
microedition.encoding: UTF-8
microedition.encoding.supported: UTF-8, UTF-16, ISO-8859-1,ISO-8859-2, Shift_JIS
要支持 Java SE 平台支持的所有编码,请将 microedition.encoding.supported 的定义保留为空白,如下所示:
microedition.encoding.supported:
注 - 无论 ISO-8859-1 编码是否在 microedition.encoding.supported 条目中列出,该编码对运行在仿真设备上的应用程序总是有效的。 |
版权所有 © 2007, Sun Microsystems, Inc. 保留所有权利