资源描述
J2ME构建于MIDP(移动信息设备简档)和CLDC(有限连接设备配置)或CDC(连接设备配置)。MIDP是设备生产厂商根据需要构造的一系列JavaAPIs。CLDC是Sun公司提供的所有设备必须支持的JavaAPIs。
一、J2ME的体系结构
Profile(MIDP Application)
CLDC/CDC
KVM
Operating System
1.KVM 虚拟机本身需要40-80KB内存;只需要20-40K动态内存;能够运行在16位25MHz处理器上。不支持浮点数
2.CLDC包含三个基本包和一个联网包
3.MIDP中定义的一些APIs,
javax.microedition.midlet.*(MIDP的超类,用于创建应用程序)
javax.microedition.lcdui.*(界面类,用于创建图形用户界面)
javax.microedition.rms(数据记录类,相当于移动设备中的数据库)
两种比较流行的简档,一种是MIDP,另一种是KJava。MIDP是一种普遍的工业标准,不依赖于任何设备生产厂商。KJava的APIs主要是Sun公司特别指定的,主要运行在Palm OS上。
二、MIDP应用程序
MIDP是一个抽象类,需要实现三个方法。
CLDC(1.1):
java.io---标准JavaIO包,J2SEIO包的子集
java.lang——核心语言包,J2SE核心语言包的子集
java.util——工具包
javax.microedition.io——CLDC通用连接框架类和接口。
MIDP(2.0+)
javax.microedition.midlet——MIDlet类包, 只包含一个MIDlet类可作为所有MIDlet的父类
javax.microedition.lcdui——界面类包,对GUI组件提供支持,
javax.microedition.rms——记录管理系统,支持数据库系统的不同类和接口,它们随后存储和检索MIDlet所用的数据
javax.microedition.lcdui.game——Game API,MIDP2.0游戏编程扩展
javax.microedition.media——多媒体类包javax.microedition.media.control——多媒体控制类包
javax.microedition.pki——数字签名类包另外还有javax.microedition.io包中的一部分类。
MIDlet(Mobile Information Devices let):手机上运行的J2ME应用程序,即移动信息设备小程序。以后我们编写的就是MIDlet
用Eclipse创建第一个MIDlet
MIDlet在应用中可能存在的状态:
运行(Active)状态—程序正在运行中;
暂停(Paused)状态
调用notifyPaused( )函数,MIDlet立刻进入此状态;
MIDlet持有的所有资源暂时被释放,但它随时可能被运行;
销毁(Destroyed)状态
调用notifyDestroyed( )函数,MIDlet立刻进入此状态;
MIDlet被永久地关闭并且释放占用的所有资源,等待着废物清理程序的处理。
运行,打包
三、MIDlet套件
在MIDlet套件中,应该包含如下文件:
用于运行程序的jar文件
用于描述jar文件的清单文件MANIFEST.MF
Java应用程序描述文件jad
2.MANIFEST.MF
用来描述MIDletSuite的配置,如:名称、版本、开发商等;MANIFEST 文件为纯文本文件,文件扩展名为.mf.
MANIFEST 必须包含以下属性:
MIDlet-Name—MIDletSuite 的名称
MIDlet-Version—MIDletSuite 的版本号,格式为主版本.次版本.微版本,例如0.0.0,这也是版本号的默认值。版本号主要用于安装或升级。
MIDlet-Vendor —MIDletSuite 的提供商
3. jad文件
JAD 描述文件为纯文本文件,文件扩展名为.jad;说明具体的运行配置,以及Jar文件所在的位置的信息
JAD 描述文件必须提供如下属性:
MIDlet-Name—略
MIDlet-Version—略
MIDlet-Vendor—略
MIDlet-Jar-URL—下载该MIDletSuite 的URL 地址。虽然这里可以使用绝对位置或相对位置,但还是建议用绝对位置。
MIDlet-Jar-Size—JAR 文件的大小,计算单位为字节。
Jad的作用:如果内容所有有用的描述都在jar中,大量的时间会被浪费在传输大文件上,而这些文件最终会被丢弃。清单文件中的部分属性及一些额外信息被复制到jad中,不需要下载全部的文件,首先获取jad文件,再确定是否需要获取jar文件。
四、一个可用的MIDlet最基本结构
什么叫高级界面?
案例:制作如右图的界面
基础知识:
MIDlet只是提供一个运行平台,上面的界面需要自己加上去
什么样的东西能够加到MIDlet上?答:Displayble
怎么加?答:用Display,因为它是用来管理系统的输入输出设备,核心代码:要使组件能在屏幕上显示,必须取得屏幕上的Display对象:Display display=Display.getDisplay(this);
Display显示可视组件的方法为:public void setCurrent(DisplayablenextDisplayable);
软键上方的菜单(命令按钮),是Command对象,不属于Displayable,只能依赖于Displayable
Display的其他作用
获取设备支持的颜色: numColors()
是否支持彩色:isColor()
背景颜色,前景颜色:COLOR_BACKGROUND ,COLOR_FOREGROUND
边框颜色,高亮边框色:COLOR_BORDER , COLOR_HIGHLIGHTED_BORDER
高亮背景色,高亮前景色:COLOR_HIGHLIGHTED_BACKGROUND , COLOR_HIGHLIGHTED_FOREGROUND
Displayable的其他作用
设置标题: setTitle
添加删除命令按钮: addCommand,removeCommand
【例题1】
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MIDlet1 extends MIDlet {
public MIDlet1() {
System.out.println("构造函数被调用");
}
protected void startApp() throws MIDletStateChangeException {
System.out.println("startApp被调用");
}
protected void pauseApp() {
System.out.println("pauseApp被调用");
this.notifyDestroyed(); //调用destroyApp
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
System.out.println("destroyApp被调用");
}
}
【例题2】
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MIDlet2 extends MIDlet {
private Form frm = new Form("请您选择相应操作");
private Display dis;
private Command cmdDel = new Command("删除该号码",Command.SCREEN,1);
private Command cmdEdit = new Command("编辑该号码",Command.SCREEN,1);
private Command cmdExit = new Command("退出该程序",Command.SCREEN,1);
private Command cmdBack = new Command("返回上一页",Command.BACK,1);
protected void startApp() throws MIDletStateChangeException {
dis = Display.getDisplay(this); //获得当前MIDlet上的显示对象
dis.setCurrent(frm); //将frm设置为当前界面
frm.addCommand(cmdDel);
frm.addCommand(cmdEdit);
frm.addCommand(cmdExit);
frm.addCommand(cmdBack);
frm.removeCommand(cmdEdit);
}
}
展开阅读全文