如何解决Java ME设备碎片问题
创始人
2024-03-21 03:11:13
0

一次编写、随处运行的口号曾驱动了 Java 编程语言的流行,但在 Java Micro Edition (Java ME) 的世界中却并不适用。屏幕大小、颜色深度和内存等设备功能显著不同。您必须选择配置文件、配置和 J2ME API,而且会碰到我们所谓的设备碎片问题。本教程介绍如何使用 IDE 的内置功能来解决 Java ME MIDP 设备碎片问题。

需求

开始之前,需要在您的计算机中安装以下软件:

Java Standard Development Kit (JDK) 版本 5.0 或 6.0

带有 Mobility 包的 NetBeans IDE 6.0

注意:可以使用 Mobility Pack 附带的 Sun Java 无线工具包(Wireless Toolkit)部署此项目。不必使用其他软件来执行本教程介绍的基本概念。但是,如果需要部署到其他平台,我们建议您下载您要调整的适当仿真程序。可以使用以下几个***的 CLDC/MIDP 设备平台:

Nokia Series 40 SDKs for Symbian OS

Nokia Series 60 SDKs for Symbian OS

Sony Ericsson SDK 2.2.4 for the Java ME platform

Motorola Java ME SDK v6.4 for Motorola OS Products

如果您不了解 NetBeans Mobility Pack 或 Java ME 开发,建议您在继续本教程之前,阅读 NetBeans Mobility Pack 6.0 for CLDC 快速入门指南。本指南包括有关添加和注册平台仿真程序的章节。

设置应用程序

本例使用一个叫做 Ball Shot 的简单游戏,阐述如何调整设备功能来解决设备碎片问题。

下载 BallShotGame.zip 项目

解压项目并将内容放在 IDE 的 project_home 目录中。

有关将 mobility 项目导入 IDE 中的更多说明,请参阅 Mobility 项目导入指南。

创建自定义配置

解决设备碎片问题的一个策略基于 项目配置 的 NetBeans 使用。这允许您创建一组源码并为要调整的每个移动设备进行定制。注意保持配置一致,以便仿真程序平台和目标设备与要创建的“项目”配置相对应。在下例中,Nokia Series 40 是目标配置。

#p#

创建项目配置

选择“文件”>“打开项目”(Ctrl-Shift-O)。导航至已解压和已安装 SingleCotopiaGameBallShot 项目文件夹所在的文件夹。

右键单击 SingleCotopiaGameBallShot 项目节点并选择“属性”。

单击页面顶部的“管理配置”按钮。这将打开“管理配置”对话框。

单击“添加”,然后为配置键入所需的名称,然后点“确定”。

为要部署的其他仿真程序重复上一步骤。

创建功能

功能是设备属性,比如屏幕大小、颜色深度、API 支持和音频支持。在项目中创建功能允许您将其与一个或多个支持特定属性或属性组的项目配置相关联。如果将来需要修改、移除或添加配置,只需将配置与实现更改的功能相关联即可。然后,配置将自动与任何与功能相关的代码块相关联。

右键单击 SingleCotopiaGameBallShot 项目节点并选择“属性”。

从“类别”菜单树中选择“功能”页面。

从“项目配置”下拉菜单中,选择与要定义的功能相关联的配置。

如果需要,取消选中标有 使用默认配置值 的框。

单击“添加”按钮。

在“新建功能”对话框中,输入功能的名称,比如 screen,如果 screen 功能已经存在,则单击”编辑“按钮。

输入此功能的值。在本例中,输入 240x320。其他功能可以配置并调整为其他变量,比如颜色深度和音频支持。单击“确定”按钮关闭“新建功能”对话框。此功能现在已经与所选项目配置关联到一起了。

可以将此功能与其他配置相关联,方法是从“项目配置”菜单中选择不同的配置并单击“添加”按钮。

#p#

使用预处理器块添加特定于配置的代码

预处理器块允许创建、管理和跟踪特定于一个或多个项目配置或功能的代码。此代码仅为您标识的配置或功能启用(或禁用)。针对移动设备最实用的属性是屏幕大小。屏幕大小、颜色深度、API 支持和其他功能的一个有用的参考站点是 Jbenchmark 站点。

在 BallShotImageCreator.java 编辑器窗口中,右键单击实例化 BallShotImageCreator 的源码行 (public BallShotImageCreator() {。

右键单击此行并选择“预处理程序块”>“创建 If/Else 块”。在“可用项目”框中滚动并选择先前定义的功能 screen。

在行 //#if screen 上,添加以下代码:== "240x320"

当活动配置与指令值匹配时,则部署由 //#if 预处理器指令标记的代码。当活动配置与预处理器的值不匹配时,则使用由 //#else 预处理器指令包围的代码。换句话说,如果活动平台具有 240x320 功能,则仿真程序显示 22 像素的球。//#endif 预处理器指令完成预处理器块。下面就是为此游戏的一定范围的流行屏幕大小编写的示例:

 //#if screen == "128x128"
  //#       ballWidth = 10;
  //#elif screen == "176x182"
  //#       ballWidth = 16;
  //#elif screen == "176x208"
  //#       ballWidth = 16;
  //#elif screen == "240x320"
          ballWidth = 22;
  //#endif

在仿真程序上运行击球游戏

选择“运行”>“运行主项目”。

仿真程序启动之后,它应显示以下菜单:

单击仿真程序上的主按钮以启动游戏。仿真程序显示以下屏幕。为了比较,我们包括了不使用预处理器指令的游戏的截屏。注意,相对于仿真程序屏幕,图片太小了。

【编辑推荐】

  1. Java ME平台中的URLEncoder实现类
  2. 详解基于J2ME平台下SOAP协议的应用
  3. J2ME中应用程序的内存优化

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...