如何通过J2ME获取电池状态?
答案 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];