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