Я пытаюсь написать функцию Java, которая получает информацию о моей батарее из / proc / acpi / battery / BAT0 / {информация о состоянии}.
Хотя у меня есть разумный выход, если моя батарея не подключенаПри полной зарядке я заметил одну проблему, которая возникает при полной зарядке и подключении к сети.
Оставшаяся емкость в файле состояния выше, чем последнее значение полной емкости, найденное в информационном файле.Два выхода: / proc / acpi / battery / BAT0 / info
present: yes
design capacity: 7800 mAh
last full capacity: 5488 mAh
battery technology: rechargeable
design voltage: 11100 mV
design capacity warning: 780 mAh
design capacity low: 236 mAh
cycle count: 0
capacity granularity 1: 78 mAh
capacity granularity 2: 78 mAh
model number: DELL PD6857
serial number: 1857
battery type: LION
OEM info: SMP
/ proc / acpi / battery / BAT0 / state
present: yes
capacity state: ok
charging state: charging
present rate: 2668 mA
remaining capacity: 4422 mAh
present voltage: 12843 mV
Проблема в том, что когда япри полной зарядке моя оставшаяся емкость составляет 7800 мАч, что соответствует моей проектной емкости, но при отключении от переменного тока оставшаяся емкость падает, а скорость моего присутствия скачет, чтобы сделать оставшуюся емкость равной или ниже моей последней полной емкости.
вопрос заключается в том, как решить проблему определения мощности.
И на основе информации в этих двух файлах, как мне создать таймер с использованием Java, чтобы определить, сколько времени осталось до полной зарядки батареи, а также как долгоосталось, пока батарея не разрядится.
вот моя функция в коде Java.
public static int currentCharge(){
double currentPercent=0;
int lastFullCapacityInt=0;
int remainingCapacityInt=0;
try{
BufferedReader infoIn=new BufferedReader(new InputStreamReader(new FileInputStream(batteryInfo)));
BufferedReader stateIn=new BufferedReader(new InputStreamReader(new FileInputStream(batteryState)));
//first get "last full capacity" from info file.
String lastFullCapacity="";
while((lastFullCapacity=infoIn.readLine())!=null){
if(lastFullCapacity.contains("last full capacity")){
String[] s=lastFullCapacity.split(":");
String p=s[1].trim();
String[] pp=p.split(" ");
String ppp=pp[0].trim();
lastFullCapacityInt=Integer.parseInt(ppp);
}
}
infoIn.close();
//get current capacity from state file
String remainingCapacity="";
while((remainingCapacity=stateIn.readLine())!=null){
if(remainingCapacity.contains("remaining capacity")){
String[] s=remainingCapacity.split(":");
String p=s[1].trim();
String[] pp=p.split(" ");
String ppp=pp[0].trim();
remainingCapacityInt=Integer.parseInt(ppp);
}
}
stateIn.close();
} catch(Exception e){
}
currentPercent=(((double)remainingCapacityInt/lastFullCapacityInt)*100);
int c=(int)currentPercent;
double d=(currentPercent-c)*100;
if(((int)d)>50)
c+=1;
System.out.println(currentPercent);
return (c);
}
Просто хотел добавить файл состояния / proc / acpi / battery / BAT0 /, когда мойБатарея полностью заряжена, так что все могут видеть, о чем я говорю.
present: yes
capacity state: ok
charging state: charged
present rate: 1 mA
remaining capacity: 7800 mAh
present voltage: 13010 mV
следующее чтение примерно через 20 секунд после отключения от сети переменного тока
present: yes
capacity state: ok
charging state: discharging
present rate: 1993 mA
remaining capacity: 5456 mAh
present voltage: 12650 mV