2013-02-28 75 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; 
}