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