2013-02-28 154 views
0

使用Java JNA Library使用How to get the remaining battery life in a Windows system?作为参考,我制作了一个程序。不幸的是,在http://msdn.microsoft.com/en-us/library/aa373232.aspx中描述的BatteryLife Percent函数显示为-1或未知。任何人都可以解释如何让它知道吗?我知道这似乎是一个愚蠢的问题,但我似乎无法使其工作。任务栏上的电池图标显示百分比良好,因为它也很可能使用了相同的功能,所以我认为JNA库可能有问题。电池百分比

+0

的SO问你参考(http://stackoverflow.com/questions/3434719/how-to-get-the-remaining-battery-life-in-a -windows-system)可以正常工作以获取电池信息。 – Java42 2013-02-28 03:32:50

+0

@ChuckFricano输出我看到的是ACLineStatus:离线 电池标志:未知 电池寿命:未知 电池左:0秒 电池全:6829秒,我希望看到一个%,而不是未知 – 2013-02-28 03:35:30

+0

当我运行该代码我得到ACLineStatus:脱机,电池标志:低,低于33%,电池寿命:29%,电池剩余电量:5904秒,电池电量不足:未知。您应该将代码和结果添加到问题中,但问题3434719中的解决方案适用于我。 – Java42 2013-02-28 05:39:03

回答

0

我有同样的问题,这是我如何解决它。我使用了与之相同的解决方案,并发现getFieldOrder()中的字段顺序很重要,否则会得到不正确的输出。它必须与您使用的SYSTEM_POWER_STATUS结构相同。保留1的位置似乎是无关紧要的:

@Override 
protected List getFieldOrder() { 
    ArrayList<String> fields = new ArrayList<String>(); 
    fields.add("ACLineStatus"); 
    fields.add("BatteryFlag"); 
    fields.add("BatteryLifePercent"); 
    fields.add("BatteryLifeTime"); 
    fields.add("BatteryFullLifeTime"); 
    fields.add("Reserved1"); 
    return fields; 
}