从J2ME获取电池状态

时间:2009-06-03 11:37:48

标签: java java-me

如何通过J2ME获取电池状态?

4 个答案:

答案 0 :(得分:3)

嗯,唯一的标准方法是通过JSR-256。移动传感器API 您可以阅读http://www.jcp.org/en/jsr/detail?id=256

中的规范

不幸的是,这是最近的,并没有在大多数零售手机中实际实施。

发货时,索尼爱立信Satio(或Idou)将拥有它。

编辑:诺基亚N97有JSR-256,它可以安装在诺基亚N85和诺基亚5800上。

修改:Here's Attilah's other JSR-256 question with some code in the answer.

答案 1 :(得分:2)

我不确定单独使用J2ME是否存在通用方法。

使用Nokia and its properties,您可以(Get Battery Level in J2ME):

System.getProperty("com.nokia.mid.batterylevel");

通用属性as illustrated here并不总是有效(可以返回null)

  

某些系统属性可能会返回null,因为早期设备可能不支持这些属性,而某些系统属性要求MIDlet可信,否则返回null ...

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.location.*;

public class HelloMidp extends MIDlet implements CommandListener {
    private Command exitCommand;

    Display display;
    Form mainForm;

    public HelloMidp () {
        exitCommand = new Command("Exit", Command.EXIT, 1);
        mainForm = new Form ("HelloMidp");
        String batt = System.getProperty("batterylevel");
        mainForm.append (batt);
    }

    protected void startApp()
    {
        mainForm.addCommand(exitCommand);
        mainForm.setCommandListener(this);
        Display.getDisplay(this).setCurrent(mainForm);
    }

    protected void pauseApp() {}
    protected void destroyApp(boolean bool) {}
    public void commandAction(Command cmd, Displayable disp)
    {
        if (cmd == exitCommand) {
            destroyApp(false);
            notifyDestroyed();
        }
    }
}

答案 2 :(得分:0)

我确定这取决于您正在处理的手机和操作系统。没有做任何J2ME开发,我希望有某种“环境”或“系统”服务可以提供这种信息。

答案 3 :(得分:0)

这个article描述了如何在Sony Ericson手机上使用JSR 256来读取电池电量,网络覆盖范围和一些其他有趣的传感器数据。这是JP8.3及以后的支持。

实现这一诀窍的代码:

SensorInfo[] batteryInfo = SensorManager.findSensors("battery_charge", null);
SensorConnection sensor = (SensorConnection)Connector.open(batteryInfo[0].getUrl());
Data data[] = sensor.getData(1);
String batteryLevel = "Current charge level: "+data[0].getIntValues()[0];