可以在所有支持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("关闭");
}
}
}