MIDP2.0 的DISPLAY类里增加了后背闪光的功能flashBacklight(). 我是用MOTO的V3, 有直接支持. 索爱和NOKIA他们有各自的IMPLEMENTATION. 我这里简单介绍一下MOTO的用法 :)
SOS的MORSE CODE是...---..., S 是3点,O是3横,呵呵,代表的意思有的说是: SAVE MY SHIP (救我的船) 或者 SAVE MY SOULS (救命), 其实据说没有什么实际意思
点的话就闪的时间短点, 横的话就闪的时间长点, 可以在flashBacklight(int interval)的INTERVAL里设置.
整个程序在一个THREAD里面一直循环, 直到你被救为止
先定义个MIDLET, 很简单的一个:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MorseSOSMIDlet extends MIDlet {
static MIDlet instance;
static Canvas c;
public MorseSOSMIDlet() {
super();
instance = this;
}
protected void startApp() throws MIDletStateChangeException {
c = new SOSCanvas();
Display.getDisplay(MorseSOSMIDlet.instance).setCurrent(c);
}
protected void pauseApp() {
}
protected void destroyApp(boolean b) throws MIDletStateChangeException {
destroyApp(true);
notifyDestroyed();
c = null;
instance = null;
}
}
然后编个承接CANVAS类的子类:
import javax.microedition.lcdui.*;
public class SOSCanvas extends Canvas implements CommandListener, Runnable {
private Command exitCmd = new Command("退出", Command.EXIT, 1);
private Display display;
public SOSCanvas() {
addCommand(exitCmd);
setCommandListener(this);
display = Display.getDisplay(MorseSOSMIDlet.instance);
Thread t = new Thread(this);
t.start();
}
protected void paint(Graphics g) {
g.setColor(0x00FFFFFF);
g.fillRect(0,0,getWidth(),getHeight());
}
public void commandAction(Command c, Displayable d) {
if (c == exitCmd) {
MorseSOSMIDlet.instance.notifyDestroyed();
}
}
public void run() {
while (true) {
try {
Thread.sleep(1500);
display.flashBacklight(1000);
Thread.sleep(500);
display.flashBacklight(0);
Thread.sleep(500);
display.flashBacklight(1000);
Thread.sleep(500);
display.flashBacklight(0);
Thread.sleep(500);
display.flashBacklight(1000);
Thread.sleep(500);
display.flashBacklight(0);
Thread.sleep(500);
display.flashBacklight(3000);
Thread.sleep(1000);
display.flashBacklight(0);
Thread.sleep(1000);
display.flashBacklight(3000);
Thread.sleep(1000);
display.flashBacklight(0);
Thread.sleep(1000);
display.flashBacklight(3000);
Thread.sleep(1000);
display.flashBacklight(0);
Thread.sleep(1000);
display.flashBacklight(1000);
Thread.sleep(500);
display.flashBacklight(0);
Thread.sleep(500);
display.flashBacklight(1000);
Thread.sleep(500);
display.flashBacklight(0);
Thread.sleep(500);
display.flashBacklight(1000);
Thread.sleep(500);
display.flashBacklight(0);
Thread.sleep(500);
} catch (Exception e) {
// nothing
}
}
}
}
点的实现:
display.flashBacklight(1000);
Thread.sleep(500);
display.flashBacklight(0);
Thread.sleep(500);
横的实现
display.flashBacklight(3000);
Thread.sleep(1000);
display.flashBacklight(0);
Thread.sleep(1000);
不知道这样的做法是不是最高效的, 不过用起来还蛮好的. 欢迎各位指正!