MIDP2.0手机上手电筒程序的实现

2005-10-05 10:35:42  作者

  可以在所有支持MIDP2.0版本的手机上运行的手电筒程序。程序实现的原理是利用Display对象来实现对于手机背景等的控制,在该系列的手机中只能实现闪烁背景灯的功能。

  实现代码如下
//文件名LightMIDlet.java

package light;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class LightMIDlet extends MIDlet {
static LightMIDlet instance;
LightForm displayable = new LightForm(this);
public LightMIDlet() {
instance = this;
}

public void startApp() {
Display.getDisplay(this).setCurrent(displayable);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public static void quitApp() {
instance.destroyApp(true);
instance.notifyDestroyed();
instance = null;
}

}

//文件名LightForm.java

package light;

import javax.microedition.lcdui.*;

public class LightForm extends Form implements CommandListener {
StringItem si;
Command cmdOpen;
Command cmdClose;
Command cmdExit;
Display display;
public LightForm(LightMIDlet lm) {
super("手电筒");
si = new StringItem("手电筒状态","打开");
this.append(si);

display = Display.getDisplay(lm);

cmdOpen = new Command("打开",Command.OK,1);
this.addCommand(cmdOpen);

cmdClose = new Command("关闭",Command.CANCEL,1);
this.addCommand(cmdClose);

cmdExit = new Command("退出",Command.EXIT,1);
this.addCommand(cmdExit);

setCommandListener(this);

boolean b;

b = display.flashBacklight(1000000);

if(b == false){
Alert alert = new Alert("手电筒","您的手机不支持该功能!",null,AlertType.INFO);
alert.setTimeout(3000);
display.setCurrent(alert);
}
}

public void commandAction(Command c, Displayable d) {
//关闭
if (c == cmdExit) {
// stop the MIDlet
LightMIDlet.quitApp();
}
//打开
if(c == cmdOpen){
display.flashBacklight(1000000);
si.setText("打开");
}

if(c == cmdClose){
display.flashBacklight(0);
si.setText("关闭");
}
}

}