`
isiqi
  • 浏览: 16499815 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论
阅读更多

1MIDMobile Information Device)特性

由于MID这类设备,在屏幕、内存、处理器等问题上有诸多限制,在手机或是PDAMID上开发应用程序必须要考虑一些技术上的特殊点。

下面给出一些设备的特性:

·显示(display:96x54 (最小屏幕尺寸),1bit(最小色深,单色)

·输入设备: one-handed keyboard”(指ITU-T手机键盘)

·“two-handedkeyboard (指标准键盘,即QWERTY键盘)

·触摸屏。

·内存:128kbMIDP组件。

8kb-应用程序生成的Persistent data(关于Persistent data,我会在将来讲RMS时,详细说明,这里有个概念就行了)

32kbjava runtime环境。

·网络: 双向的,无线的,间断的,带宽有限的网络

·内核(kernel):至少要能运行KVM

还有很多软件上的特性,如读写non-volatile内存(就是掉电后不会失去内容的内存,如flash)。读写无线设备接口的API,等等。

除了上诉技术上的问题,你还得注意你的程序要简单易用且稳定可靠。尤其是可靠性,你开发的是通讯设备,用户是不能忍受程序有什么纰漏而影响到通话的。

2MIDP的类库

如前文所述,sunCLDC之上定义了MIDP(Mobile Information Device Profile)层,用以提供对UI、永久存储介质(persistinace storage)、和网络等更高层的(相对于CLDC)支持。那么,让我们来具体看看MIDP的类库。

MIDP由四个javax.microedition包组成,它们包括:

`·javax.microedition.rms-----关于永久存储介质(注:rmsRecord Management System的缩写)

·javax.microedition.midlet--定义了MIDlet的框架,以及MIDlet与环境的交互。

·javax.microedition.io------网络支持

·javax.microedition.lcdui---UIUser Interface)(注:UI分为high-levellow-level两种API。)

·注:如果在加上语言和实用类(java.langjava.util)则有六个。

3MIDPlet

MIDP中定义的应用程序称为MIDlet。任何一个MIDlet都是javax.microedition.midlet.MIDlet的子类,必须继承自javax.microedition.midlet.MIDlet。这很显而易见。我们在J2SE中编过AppletApplet就必须继承自java.applet.Applet。是不是很类似。请看下图,说明了MIDlet的继承体系。

┌────────────────┐

javax.microedition.midlet.MIDlet

└────────────────┘

┌──────┐

MyMIDlet

└──────┘

4、编译一个简单的MIDlet,并执行。

下面我先给出一个简单的HelloWorld程序,然后进行分析。

============源程序===========

//HelloWorld.java,一个最简单的MIDlet程序。

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class HelloWorld extends MIDlet implements CommandListener

{

private Command exitCommand;

private TextBox tb;

public HelloWorld()

{

exitCommand =new Command("Exit",Command.EXIT,1);

tb =new TextBox("Hello MIDlet","Hello,World!",15,0);

tb.addCommand(exitCommand);

tb.setCommandListener(this);

}

protected void startApp()

{

Display.getDisplay(this).setCurrent(tb);

}

protected void pauseApp()

{

}

protected void destroyApp(boolean u)

{

}

public void commandAction(Command c,Displayable d)

{

if (c ==exitCommand)

{

destroyApp(false);

notifyDestroyed();

}

}

}

==========源程序完============

该程序显示“HelloWorld”字符串。程序本身非常简单,如果你熟悉JavaApplet编程的话,你会发现与Applet很类似。好,我们先把它编译,运行一下看看。

编译之前的准备:

硬件:因为是Java,所以内存最少有128MB以上,CPU最好是PII或更高。

平台:winxp

SDK:你需要有(下述软件都可在sun网站上免费下载)

·Java 2 SDK 1.3或以上。

·J2ME Wireless Toolkit 1.0.3

·以下可选:

sunIDEForte for java

下载好后,先安装JDK1.3,再安装J2ME Wireless Toolkit 1.0.3,它会自动找到您的JDK1.3,并作相应设置。如果您不用命令行的话,环境变量也不用设置直接可在图形界面上运行,非常方便。关于环境变量的设置请自己参考手册。

编译的步骤:

如果你按上述已经安装好JDKJ2mewtk,请按以下步骤编译,实际上是非常简单的:

(注:下述默任JDK安装在c:\JDK1.3,J2ME Wirless Toolkit 安装在c:\J2mewtk\

A. 开始->程序->J2ME Wirless ToolKit 1.0.3->KToolBar

B. 这时会出现"J2ME Wirless ToolKit"窗口,点"New project"按键,在Project name项填:HelloWorld;在MIDLet Class Name填:HelloWorld。点击Creat project

C. 这时会出现Setting for project对话窗,采取默认即可。点击ok

D. 这时请注意,因为没有down sunIDE,所以你要手工把你事先编辑好的Hello World.java放置在c:\j2mewtk\apps\HelloWorld\src\目录下。这时,按“Build”键,如果一切正常,将提示编译完毕。这时在device下拉选单中选定你想要的设备,再按“run”键。

5MIDletLifecycle

由上例看,MIDlet程序的运行是由startApp(), pauseApp()destroyApp()3个方法控制的。它们在javax.microedition.midlet

.MIDlet中定义。所有的MIDlet都必须有这3个方法。顾名思义startApp()方法用于标志一个MIDlet的开始执行。不过这里要注意一点,与HelloWorld程序的constrctor不同。startApp()不光是在初始化完一个MIDlet时执行,只要该MIDLet被从Paused态激活(变为Active态),startApp()就会被调用。pauseApp()方法标志着MIDlet进入Pause态。而destroyApp()方法标志着MIDlet进入destroyed态。(注意:这里严格的讲应该说成:方法被调用并成功返回标志着...

MIDlet的执行机制:MIDlet的执行是通过Application Management software来管理的。这玩意儿是处在操作系统级别上来管理MIDlet运行的底层机制的总称,所谓MIDlet stateMIDlet状态)就是它一手操办,控制管理的。MIDletstate确保了AMS随时可以消灭该MIDlet,同时MIDlet也有办法进入一个Pause态,并可再次激活。MIDlet State 分为PausedActivedestroyed三种。当AMS创生一个新的MIDlet实体时,对应于MIDlet,表现为其constructor被调用,进入Paused状态。当所有的准备工作都做好后,AMS判断现在MIDlet可以运行了,于是调用MIDlet.startApp()方法。进入Active态。当AMS决定要把MIDlet转入Paused态,就会调用MIDlet.pauseApp()方法,MIDlet就会暂停执行,通常Paused态会用于释放所占资源。当AMS判断MIDlet不再需要,就会调用MIDlet.destroyApp()MIDlet被消灭。请注意我上述是站在AMS的角度在谈AMS如何控制MIDlet的状态改变。程序员也可请求MIDlet的状态的变换,通过调用resumeRequest,notifyPaused,notify Destroyed这三个方法。

例如,我在上一节给出的例子中有如下程序片段:

public void commandAction(Command c,Displayable d)

{

if (c ==exitCommand)

{

destroyApp(false);

notifyDestroyed();

}

}

这里先把destroyApp()unconditional值置为false,抛出一个MIDletStateChange Exception 异常,表示MIDlet这时还不想被destroynotityDestroyed()通知AMSMIDlet进入destroyed态。具体的细节请参阅MIDP API文档。

下面给出一个最简单的MIDlet流程:

========FlowMIDlet.java=========

import javax.microedition.midlet.*;

public class FlowMIDlet extends MIDlet

{

public void startApp()

{

System.out.println( "In startApp..." );

pauseApp();

}

public void pauseApp()

{

System.out.println( "In pauseApp..." );

destroyApp( true );

}

public void destroyApp( boolean unconditional)

{

System.out.println( "In destroyApp..." );

}

}

==== ===FlowMIDlet.java===============

关于MIDlet状态的改变可以用下图表示:

1 MIDlet的状态转变

这里还要说几句闲话,关于AMS,其作用不止是控制MIDlet的运行状态。它实际上际上负责了MIDlet的整个运行机制。

6、关于MIDlet Suites

在上一节里我主要从应用程序执行角度讲述了MIDletlifecycle。但实际上MIDletlifeCycle是包括了从获取(retrieve),安装,运行,卸载的一个整体。通过ASM来进行控制。其中运行这一步包括了我已经讲过的三种状态的改变。ASMMIDlet的获取,安装,运行,卸载提供了一个运行环境。如果你的MIDlet想要下载到实机上去运行,你就必须将其打包为一个jar文件。一个Jar文件中可能有多个MIDlet,我们把在同一Jar文件中的MIDlet的集合称为MIDlet suite。一个打包好的MIDlet包括两部分:一个.jad文档,即描述文档。和一个.jar文档。其中.jad文档是一个文本文档,记录MIDlet的属性名称和属性值。.jar文件是一个压缩包,其中有MIDlet的清单(Manifest.mf,编译好的类(即MIDlet),图片,文本等其他资源。

7、名词:

MIDlet一个可以执行的应用程序基本单位。除了继承自javax.microedition. midlet.MIDlet之外,还包括让此类可以顺利执行的所有其它类和资源文件(只要是非class文件都称做资源文件)所构成的集合。

MIDlet Suit 许多MIDlet所构成的集合,一般又叫做MIDlet应用程序套件。MIDlet SuiteMIDlet的关系,就很像Offic

分享到:
评论

相关推荐

    J2ME中文教程(带你走进移动世界开发)

    三、MIDP详解 Mobile Information Device Profile(MIDP)是J2ME上的应用程序接口(API),用于构建功能丰富的移动应用程序,特别是那些需要用户界面和网络连接的应用。MIDP提供了图形用户界面(GUI)组件,如按钮、...

    j2me api 英文版

    MIDP详解** MIDP是J2ME的一个关键组件,主要用于开发移动电话上的应用程序。它包含两个主要部分: - 用户界面框架:轻量级用户界面(LWUIT)提供了一组简单的组件,如按钮、文本框和列表,用于创建图形用户界面。...

    J2ME开发教程

    MIDP详解 Mobile Information Device Profile (MIDP) 是J2ME中最常用的应用程序框架,主要用于开发移动设备上的应用程序。它包含了用户界面组件(如Canvas和Form)、网络连接功能以及数据存储能力。 ### 4. 用户...

    J2ME技术手册---极品

    **四、MIDP详解** 1. **用户界面**:MIDP提供了基础的图形用户界面组件,如 LCDUI(Limited Display User Interface),用于创建简单的用户交互。 2. **网络功能**:MIDP支持HTTP协议,允许应用程序访问网络资源,...

    Java ME on Symbian OS Inside the Smartphone Model.rar

    2. **CLDC和MIDP详解**:理解这两个核心组件的功能和API,以及如何利用它们来构建应用程序。 3. **资源管理**:学习如何在有限的硬件资源下优化Java ME应用的性能和内存使用。 4. **用户界面设计**:掌握MIDP提供的...

    j2me的全套资料j2me的

    2. CLDC和MIDP详解:理解这两个核心组成部分及其功能。 3. 开发环境设置:如何安装和配置JCreator或其他IDE。 4. 应用开发实践:编写简单的MIDlets,包括图形用户界面、事件处理和网络通信。 5. 调试与优化:学习...

    J2ME教程及开发大全

    **三、MIDP详解** MIDP是J2ME中的核心Profile,包含两个主要部分:用户界面组件(MIDlet Suite)和网络功能(Java API for Wireless Toolkit)。MIDlet是J2ME应用的基本单元,类似于Java SE中的JAR文件。MIDlet ...

    MIDP2.0 稀有资源 与你分享

    **MIDP2.0(Mobile Information Device Profile 2.0)详解** MIDP2.0是Java ME(Micro Edition)平台的一个重要组件,它为移动设备提供了丰富的应用程序开发框架。这一版本的MIDP(Mobile Information Device ...

    J2ME MIDP源码

    **J2ME MIDP源码详解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专为资源有限的嵌入式设备和移动设备设计,如手机和智能手表。MIDP(Mobile Information Device Profile)是J2ME的一部分,提供了用于...

    J2me游戏开发包MIDP2使用示例

    **J2ME游戏开发包MIDP2使用详解** J2ME(Java 2 Micro Edition)是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如早期的智能手机和平板电脑。MIDP(Mobile Information Device Profile)是J2ME的一...

    midp2.0:WTK源代码

    **MIDP 2.0详解** MIDP 2.0是MIDP的第二个主要版本,相比之前的1.0版本,它引入了许多新特性以提升用户体验和开发者效率。其中显著的改进包括: 1. **可下载的MIDlets**: MIDP 2.0允许用户在设备上下载和安装新的...

    J2me中文教程MIDP2.0

    #### 核心知识点详解 ##### 1. 用户界面设计与交互 在MIDP 2.0中,开发者可以利用更丰富的UI组件来创建动态的用户界面。例如,`Form` 类允许将多个组件组合在一起,而 `Command` 和 `CommandListener` 接口则用于...

    SUN MIDP2.0源码开发包.rar

    《SUN MIDP2.0源码开发包详解:挖掘J2ME手机游戏开发宝藏》 SUN MIDP2.0源码开发包是Java开发者,尤其是致力于移动游戏开发的工程师们的重要参考资料。MIDP(Mobile Information Device Profile)是Java Micro ...

    MIDP2.0 Game API简介

    #### 三、关键组件详解 ##### 1. GameCanvas `GameCanvas` 类继承自 `Canvas`,专为游戏开发设计,提供了一系列优化方法,比如支持离屏缓冲区(Off-Screen Buffering),可以提高游戏性能,减少重绘时的闪烁现象。...

    MIDP.zip_project

    《移动信息设备配置(MIDP)项目开发详解》 在当今的移动通信领域,Java ME(Micro Edition)作为跨平台的开发环境,为各种小型设备提供了丰富的应用开发能力。MIDP(Mobile Information Device Profile)是Java ME的...

    midp2.0 spec kor_j2me_源码

    **Java ME MIDP 2.0规范详解** Java Micro Edition(J2ME)是Java平台的一个子集,专为资源有限的嵌入式设备而设计,如移动电话、智能家电和电子游戏机等。MIDP(Mobile Information Device Profile)是J2ME中的一...

    J2ME MIDP 2.0 无线设备编程的一些源码

    **Java J2ME MIDP 2.0 无线设备编程详解** Java J2ME(Micro Edition)是Java技术的一个分支,特别设计用于嵌入式和移动设备,如手机、PDA和智能家电。MIDP(Mobile Information Device Profile)是J2ME中的一个...

Global site tag (gtag.js) - Google Analytics