赛迪网 > IT技术 Java > (最新更新)Java基础
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

使用J2ME与MIDP进行手机开发的全工略 (3)

发布时间:2006.04.03 12:18     来源:www.51cto.com    作者:wayne_z

Java应用程序描述器文件(JAD)虽然没有必要,你仍然可以在 JAR文件中包含一个 JAD文件,就像清单文件一样,这个文件也包含 MIDlet的信息。创建一个 JAD文件是基于两个原因。1、向应用程序管理器提供信息,说明 JAR文件的内容,使用这些信息,就可以判断一个 MIDlet是否适合运行在这个设备上。例如,通过查看属性 MIDlet-Data-Size,应用程序管理器可以确定 MIDlet是否需要比设备可以提供的更多的内存。 2、提供一种方法,可以把参数传送到 MIDlet而不必更改 JAR文件,在本文的后半段我们将看一个这样的例子。 JAD文件使用表 1中相同的属性。如果你需要创建你自己的属性,也可以办得到,只要使用不以 MIDlet为开头的属性名就可以了,下面的 showProperties.jad文件就是自定义属性的例子。和清单文件一样,有某些属性必须被定义,如果这些属性不可用的话,应用程序管理器将不加载这个 MIDlet,它们是: MIDlet-Name  MIDlet-Version  MIDlet-Vendor  MIDlet-  MIDlet-Jar-URL  MIDlet-Jar-Size MIDlet-Name、MIDlet-Version和MIDlet-Vendor的值必须与 JAR中的清单文件中相同的属性的值一致。可能看出,如果在这两个文件有什么不同的话,申请管理器不也会加载这个 JAR。除了这些属性以外,如果两个文件中的另外名称相同的属性,但是属性值不相同的,将优先采取应用程序描述器文件 ( JAD )属性。MIDP 1.0规范没有规定 MIDlet-n属性是 JAD文件的必需属性。可是,没有这个属性,就没有办法在设备模拟器中预览 MIDlet。在两个文件中包含这个属性没有问题,并且事实上,那么做可以更清楚看出这些文件是怎样关联的。因此,出于完整性考虑,这里的所有离子都将在JAD文件中包含MIDlet-n属性。因此,出于完整性考虑,这里的全部例子都将在 JAD文件中包含 MIDlet-n属性。下面是一个非常简单的例子: MIDlet-Name: Note Pad MIDlet-Version: 1.0 MIDlet-Vendor: ABC WorkGroup. MIDlet-Jar-URL: http://www.abcworkgroup.com/MIDlets/notepad.jar MIDlet-Jar-Size: 26248 MIDlet-1: NotePad, /images/NotePad.png, NotePad.Main从MIDlet中访问 JAR/JAD属性一个MIDlet程序可以访问所有的定义在清单文件(在JAR文件中)和JAD文件的属性。返回属性信息的方法及所在的完整的程序包名是javax.microedition.midlet.MIDlet.getAppProperty(String name)下面是一个例子,从jar/jad文件中读出并打印属性值。showProperties.jar中的 manifest.mf文件的内容如下:

MIDlet-Name: Show Properties MIDlet

MIDlet-Version: 1.0.1

MIDlet-Vendor: ABC WorkGroup.

MIDlet-1: ShowProps, , showProperties

MicroEdition-Profile: MIDP-1.0

MicroEdition-Configuration: CLDC-1.0

MIDlet-Description: A simple property list example

MIDlet-Data-Size: 1500


showProperties.jad的内容:

MIDlet-Name: Show Properties MIDlet

MIDlet-Version: 1.0.1

MIDlet-Vendor: ABC WorkGroup.

MIDlet-Jar-URL: file://showProperties.jar

MIDlet-Jar-Size: 1132

MIDlet-1: ShowProps, , showProperties

JadFile-Version: 1.5

MIDlet-Data-Size: 500


showProperties.java的源程序:

import javax.microedition.midlet.*;

public class showProperties extends MIDlet

{

public void startApp() throws MIDletStateChangeException

{

System.out.println("Vendor: " + getAppProperty("MIDlet-Vendor"));

System.out.println("Description: " + getAppProperty("MIDlet-Description"));

System.out.println("JadFile Version: " + getAppProperty("JadFile-Version"));

System.out.println("MIDlet-Data-Size: " + getAppProperty("MIDlet-Data-Size"));

}

public void pauseApp()

{ }

public void destroyApp(boolean unconditional)

{ }

}

下面这些是一些比较重要的地方:manifest.mf文件作为 JAR文件 showProperties.jar的一部分储存的。 JAD文件showProperties.jad使用MIDlet-Jar-URL: file://showProperties.jar 引用showProperties.jar。 当你浏览这个 JAD文件的时候,它使用上面那个命令找出相关联的 JAR文件并读取清单文件的内容。 属性MIDlet-Name、MIDlet-Version和MIDlet-Vendor 既在 JAR中的清单文件中又在 JAD文件中,这些属性的值都必须完全相同。 MIDlet-Description属性来自清单文件,是可选的。 JadFile Version属性不在表 1中,因此它是一个自定义属性。因为 JAD文件内的属性可从MIDlet访问,所以你可以不用改变 JAR文件而添加属性到 JAD中。 属性 MIDlet-Data-Size在清单文件和 JAD文件中都有,就像前面指出的那样,当两个文件中有完全相同的属性时, JAD文件中的属性将使用。切记这不适用于MIDlet-Name、MIDlet-Version和MIDlet-Vendor。

在 MIDlet套件中封装多个 MIDlet

在我们谈论如何封装多个 MIDlet之前,我们先得多写几个可用的MIDlet。下面有两个简单的 MIDlet。第一个显示一个带有简短消息的文本框组件。MIDlet1.java源程序:

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class MIDlet1 extends MIDlet implements CommandListener

{

 private Display display; // 引用Display对象

 private TextBox tbxMain; // 显示消息的文本框

 private Command cmdExit; // 退出MIDlet的命令

 // 构造程序

 public MIDlet1()

 {

display = Display.getDisplay(this);

cmdExit = new Command("Exit", Command.SCREEN, 1);

tbxMain = new TextBox("MIDlet 1", "Welcome", 50, 0);

tbxMain.addCommand(cmdExit);

tbxMain.setCommandListener(this);

 }

 // 启动MIDlet时由应用程序管理器调用

 public void startApp()

 {

display.setCurrent(tbxMain);

 }

 // 一个必要的方法

 public void pauseApp()

 { }

 // 一个必要的方法

 public void destroyApp(boolean unconditional)

 { }

 file://检查一下是否选择Exit命令

 public void commandAction(Command c, Displayable s)

 {

if (c == cmdExit)

{

 destroyApp(false);

 notifyDestroyed();

}

 }

}


<<上一页 1 2 3 4 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 用简单的J2ME程序测试MIDlet生命周期 (04-03) · J2ME中使用记录存储系统(RMS)存储信息 (04-03)
· MVC模式在J2ME项目中的实际应用 (04-03) · 在J2ME手机编程中内存的优化三招 (04-03)
· J2ME开发中记录管理系统的详细介绍 (04-03) · J2ME开发中如何从MIDlet中调用JSP页面 (04-03)
· J2ME开发之手机键盘使用注意问题 (04-03) · 在J2ME手机编程中播放声音流程的介绍 (04-03)
· 在J2ME手机编程中的时间处理的方法 (04-03) · 在J2ME编程中随机数字处理的介绍 (04-03)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 工信部“三定”公布 总编制731名设24司局
· 北京发电子商务监管意见 营利性网店须办照
· 直播 08中国城市信息化高峰论坛 案例点评
· 烽火网络校园解决方案 移民安置信息管理系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统