`
zendj
  • 浏览: 121206 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

第九章:MIDP API

阅读更多
第九章:MIDP API

介绍

移动信息设备简表 (MIDP) 适合类似于蜂窝电话和寻呼机这样的设备。MIDP,就象 KJava 一样,同样也建立在 CLDC 之上。MID 简表提供一种标准的运行时环境,允许在终端用户设备上动态地配置新的应用程序和服务。

在本章中,我们将详细地讨论 MID 定义的七个软件包。我们还将建立一个 MIDP 应用程序示例。

UI 设计注意事项

MIDP 包括一个低级的 UI API 和一个高级的 UI API。低级的 API 允许您完全访问一个设备的显示屏,也允许访问原始键和指针事件。然而,使用低级 API 时, 没有可用的用户界面控件。应用程序必须精确地绘制出按钮和其它所有的控件。

相反,高级 API 提供简单的用户界面控件但不能直接访问原始的输入事件或显示屏。由于显示屏的尺寸和 MIDP 设备输入方法的差异,控件显得很抽象。MIDP 的实现确定了绘制控件的方法,也确定了如何管理用户输入。

让我们在后面的章节里更进一步了解 MIDP 的软件包和类。

MIDP API

MIDP 包含四个核心 CLDC 软件包 (java.lang、java.io、java.util 和 javax.microedition.io),另加下面的三个特定于 MIDP 的软件包:

? javax.microedition.lcdui
? javax.microedition.midlet
? javax.microedition.rms

我们将在本章的后面部分详细介绍特定于 MIDP 软件包。除了上面新的软件包之外,MIDP 还向核心 CLDC 软件包添加了四个新类,如下所示。

? java.util.Timer -- 用于为后台线程中将来要执行的任务确定时间。
? java.util.TimerTask -- 被 java.util.Timer 类使用,用来为后台线程中稍后的执行定义任务。
? javax.microedition.io.HttpConnection -- 一个接口,为 HTTP 连接定义必要的方法和常量。
? java.lang.IllegalStateException -- 一个 RuntimeException, 指出在不合法或不合适的时间已经调用的一个方法。

MIDlet 介绍

MIDlet 是一个 Java 类,它扩展了 javax.microedition.midlet.MIDlet 抽象类。实现 startApp()、pauseApp()和 destroyApp()方法,这些方法类似于 J2SE 的 java.applet.Applet 类中的 start()、stop()和 destroy()方法。

除了扩充 javax.microedition.midlet.MIDlet 的主 MIDlet 类之外,一个 MIDP 应用程序通常还包括其它一些类,这些类能随它们的资源一起被打包成为 jar 文件 -- 称之为 MIDlet 套件。一个 MIDlet 套件中的不同 MIDlet 能共享 jar 文件的资源,尽管不同套件中的 MIDlets 不能直接相互作用。

MIDlet 在应用程序生命周期中有三种可能的存在状态 -- 运行状态、暂停状态、销毁状态。运行状态,正如其名称所暗示的,意味着 MIDlet 正在运行中。这种状态始于 startApp 方法被调用时。在暂停状态中,MIDlet 持有的所有资源将被释放,但是它准备着再次被运行。调用 notifyPaused 方法时,MIDlet 处于暂停状态。在销毁状态中,MIDlet 已经永久地将其自身关闭,释放所有的资源,等待着废物清理程序的处理。它是通过 notifyDestroyed 方法来调用的。

在接下来的两页中,我们来看一个简单的 HelloWorld MIDlet。

HelloWorld MIDlet

与使用 KJava HelloWorld 应用程序一样,这个 MIDlet 也会在 MIDP 设备的显示屏上显示 "Hello World!" 和 Exit 按钮,按下该按钮会终止应用程序。

HelloWorld.java 文件以下面的代码行开始,这些代码行导入稍后会在 HelloWorld 类中使用的类:

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;

由于 HelloWorld 类是一个 MIDP 应用程序,它扩展了 MIDlet。它也实现 CommandListener 接口来处理事件:

public class HelloWorld extends MIDlet implements CommandListener

下面的方法是一个缺省构造程序,它创建一个新表单,在上面初始化控件,然后显示出来:

private Form form;

public HelloWorld()
{
// Create a new form on which to display our text
form = new Form("Test App");
// Add the text "Hello World!" to the form
form.append("Hello World!");
// Add a command button labeled "Exit"
form.addCommand( new Command( "Exit", Command.EXIT, 1 ) );
// Register this object as a commandListener
form.setCommandListener( this );
}

调用 startApp() 方法启动应用程序与小应用程序的启动方法很象。在 MIDle 的一次执行中它可能会被调用多次。如果 MIDlet 暂停,pauseApp() 将会被调用。要重新启动 MIDlet,需调用 startApp()。仅须执行一次的主初始化代码应该放置在构造程序中:

public void startApp()
{
// Get a reference to the display, and show the form
Display display = Display.getDisplay(this);
display.setCurrent( form );
}

pauseApp() 被调用使得 MIDlet 处于暂停状态。在此应用程序中,当进入暂停状态时,我们没执行任何操作;但是我们仍然需要在 MIDlet 中实现 pauseApp 方法,因为它是父 MIDlet 类中的抽象方法。

public void pauseApp() { }

destroyApp() 被调用,破坏了 MIDlet 并使其处于销毁状态。在此应用程序中,我们通过将引用设为 null,释放了对表单的引用。

public void destroyApp(boolean unconditional)
{
form = null;
}
commandAction() 方法是事件处理程序,被请求实现 CommandListener 接口。目前,它破坏了应用程序并通知应用程序管理软件 MIDlet 已经完成。

public void commandAction(Command c, Displayable d)
{
// Destroy this MIDlet
destroyApp(true);
// Notify the application management software that this MIDlet
// has entered the destroyed state
notifyDestroyed();
}

MIDP 软件包

除标准 CLDC 软件包之外,MIDP 还包含三个附加的软件包:

? javax.microedition.lcdui -- 定义用来控制 UI 的类。这个软件包既包含高级 UI 类(例如 Form、Command、DateField 和 TextField 等),又包含低级 UI 类(允许用低级方式控制 UI)。

? javax.microedition.midlet -- 包含 MIDP 主类中的一个,MIDlet 类,为 MIDP 应用程序提供访问关于其运行所在环境信息的权限。

javax.microedition.rms -- 定义一个类的集合,这些类为 MIDlet 提供了永久存储并随后重新得到数据的机制。
分享到:
评论

相关推荐

    Kicking.Butt.with.MIDP.and.MSA.Creating.Great.Mobile.Applications

    - 第9章:可能涉及MIDP的基本概念,包括如何创建MIDlet(J2ME应用程序的基本单元),以及基本的用户界面组件如ChoiceGroup和Form的使用。 - 第12章:可能深入到MIDP的图形和游戏开发,可能会介绍低级绘图API,以及...

    midp4palm-1_0

    9. **社区与支持**:由于Midp4Palm-1_0是一个开源项目,开发者可以找到社区论坛和文档来获取帮助,解决问题,或者参与项目的改进。 10. **应用示例**:使用Midp4Palm-1_0开发的应用可能包括游戏、工具应用、生产力...

    J2ME的MIDP游戏开发毕业论文

    3.1 MIDP中的游戏API 9 3.2 游戏类构成 9 3.2.1 Boxer类的实现 10 3.2.2 GameCanvas类的功能及特点 10 3.2.3 Sprite类的功能及特点 11 3.3游戏角色的处理 11 3.4 游戏中的事件处理 12 3.4.1 key Pressed方法 12 ...

    Mobile Information Device Profile for Java 2 Micro Edition Version 2.0(MIDP 2.0).PDF

    MIDP 2.0是MIDP的第二个主要版本,相比1.0版本,它引入了许多新特性和改进,旨在提升用户体验和开发者的工作效率。以下是MIDP 2.0的关键特性: 1. **用户界面增强**:MIDP 2.0引入了可定制的轻量级用户界面组件,如...

    J2ME 中文版教程

    第九章“MIDP 2.0 Push 技术”介绍了如何通过异步方式将信息传送给设备并自动启动MIDlet 程序的机制。 第十章“MIDlet 的开发流程与部署”介绍了如何真正完成你的程序并打包发往设备运行。 第十一章“搭建开发平台—...

    《Java语言程序设计》电子课件

    9. **第12章:J2ME基础** - J2ME是Java针对嵌入式设备和移动设备的版本,本章会介绍J2ME的结构、配置文件、MIDP(Mobile Information Device Profile)API以及如何开发移动应用。 通过这些章节的学习,学习者不仅...

    J2ME 中文教程

    第九章“MIDP 2.0 Push 技术”介绍了如何通过异步方式将信息传送给设备并自动启动MIDlet程序的机制。 第十章“MIDlet的开发流程与部署”介绍了如何真正完成你的程序并打包发往设备运行。 第十一章“搭建开发...

    j2me 中文教程 开发环境 J2ME语言

    第九章“MIDP 2.0 Push 技术”介绍了如何通过异步方式将信息传送给设备并自动启动 J2ME 中文教程 by www.j2medev.com MIDlet 程序的机制。 第十章“MIDlet 的开发流程与部署”介绍了如何真正完成你的程序并打包发往...

    Writing MIDP Games

    4. **游戏API**:MIDP中的游戏API提供了基本的游戏功能支持,如动画处理、碰撞检测等。 #### 目标 本指南旨在帮助开发者掌握MIDP游戏开发的基本流程和技术要点,包括从概念设计到最终产品的全过程。 #### 规划 1...

    J2ME手机游戏MIDP1.0游戏入门

    **J2ME手机游戏MIDP1.0游戏入门** ...通过学习这个教程,初学者将掌握MIDP1.0的基础知识,能够创建出自己的第一个手机游戏——五子棋。在这个过程中,他们将深化对J2ME的理解,为更复杂的移动应用开发打下坚实基础。

    J2ME 中文教程1.01a

    第九章“MIDP 2.0 Push 技术”介绍了如何通过异步方式将信息传送给设备并自动启动MIDlet程序的机制。 第十章“MIDlet的开发流程与部署”介绍了如何真正完成你的程序并打包发往设备运行。 第十一章“搭建开发...

    JAVA项目:基于java Swing实现的吞吃蛇小游戏(论文+源代码)

    第一章 绪论 1 1.1 研究背景 1 1.2 研究内容 1 第二章 J2ME及其体系结构概述 2 2.1 J2ME简介 2 2.2 J2ME 体系结构 2 2.3 移动信息设备简表概述 3 2.3.1 MIDP的目标硬件环境 3 2.3.2 MIDP应用程序 3 2.3.3 CLDC和MIDP...

    毕设项目:基于J2ME的手机游戏开发(JAVA+文档+源代码)

    第一章 绪论 1 1.1 研究背景 1 1.2 研究内容 1 第二章 J2ME及其体系结构概述 2 2.1 J2ME简介 2 2.2 J2ME 体系结构 2 2.3 移动信息设备简表概述 3 2.3.1 MIDP的目标硬件环境 3 2.3.2 MIDP应用程序 3 2.3.3 CLDC和MIDP...

    midp and msa手机编程

    本篇文章将重点探讨Mobile Information Device Profile (MIDP) 和 Mobile Screen API (MSA) 这两种技术在手机编程中的应用。此外,我们还将结合提供的部分内容,深入分析相关的Java技术栈,包括但不限于J2EE、Java ...

    MIDP2.0讲座(8)

    这个讲座系列的第八部分将深入探讨MIDP2.0的关键特性和技术,帮助开发者更有效地创建功能丰富的移动应用程序。 ### 1. MIDP2.0概述 MIDP2.0是MIDP1.0的升级版本,引入了多项新功能和改进,以增强用户体验和开发者...

    JAVA基于J2ME的手机游戏开发吞吃蛇小游戏(论文+源代码)

    第一章 绪论 1 1.1 研究背景 1 1.2 研究内容 1 第二章 J2ME及其体系结构概述 2 2.1 J2ME简介 2 2.2 J2ME 体系结构 2 2.3 移动信息设备简表概述 3 2.3.1 MIDP的目标硬件环境 3 2.3.2 MIDP应用程序 3 2.3.3 CLDC和MIDP...

    JAVA基于J2ME的手机游戏开发(论文+源代码)

    第一章 绪论 1 1.1 研究背景 1 1.2 研究内容 1 第二章 J2ME及其体系结构概述 2 2.1 J2ME简介 2 2.2 J2ME 体系结构 2 2.3 移动信息设备简表概述 3 2.3.1 MIDP的目标硬件环境 3 2.3.2 MIDP应用程序 3 2.3.3 CLDC和MIDP...

    midp2.0 spec kor_j2me_源码

    MIDP 2.0是MIDP的第二个主要版本,带来了许多增强的功能和改进。 **1. MIDP 2.0概述** MIDP 2.0的主要目标是提供更丰富的用户体验和增强的应用程序功能。它包括对用户界面的改进,支持更大的内存和屏幕分辨率,以及...

    J2ME中文教程

    - MIDP API:包括用户界面组件、网络连接、数据存储等核心功能。 - 用户界面:基于轻量级用户界面(LWUIT)组件,如ChoiceGroup、Form、TextBox等。 - 程序结构:通常包含主类、资源文件和配置文件。 4. **低级...

Global site tag (gtag.js) - Google Analytics