操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

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

2007-10-30 网友评论 0 条 点击进入论坛

  如果你的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) { }

  }

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 登录邮箱: 密码:
  匿名发表
今日推荐
技术文库(共有 46294 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
移动开发
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail