现在的位置: 首页 > 综合 > 正文

中断Java ME手机上的屏幕保护程序

2013年06月02日 ⁄ 综合 ⁄ 共 1327字 ⁄ 字号 评论关闭

如果你的J2ME应用程序不要求用户连续按键,那么在SonyEricsson的手机上运行的程序,可能一段时间之后就会出现屏幕保护界面,这是手机自带的功能。但是我们可以通过Nokia UI API来设置背景灯来阻止屏幕保护界面。但是持续让背景灯打开会消耗更多的电量。
请注意:对于UIQ3的手机,例如W950 M600等,可以从控制面板来禁止屏幕保护程序,因此Nokia UI API不再适合。
还需要注意的是由于我们并非在程序中禁止屏幕保护程序,而是中断其运行。因此要在循环中不停的调用setLights()方法。
DeviceControl.setLights(0, 100);
下面是一个案例

import com.nokia.mid.ui.DeviceControl;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class BacklightWorkaround extends MIDlet {
private SimpleCanvas canvas;
/**
* Keeps the backlight on by repeatedly setting
*/
class LightThread extends Thread {
public void run() {
while(true){
DeviceControl.setLights(0, 100);
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
}
private class SimpleCanvas extends Canvas implements CommandListener{
private Command exitCmd;
private MIDlet midlet;
public SimpleCanvas(MIDlet midlet) {
this.midlet = midlet;
exitCmd = new Command("Exit",Command.EXIT, 1);
addCommand(exitCmd);
setCommandListener(this);
}
public void paint(Graphics g) {
g.drawString("Let there be light.", 0, 0, Graphics.LEFT|Graphics.TOP);
}
public void commandAction(Command command, Displayable displayable) {
if(command == exitCmd){
midlet.notifyDestroyed();
}
}
}
public void startApp() {
if(canvas == null){
canvas = new SimpleCanvas(this);
new LightThread().start();
}
Display.getDisplay(this).setCurrent(canvas);
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
}

抱歉!评论已关闭.