Peter created CB-4519:
-------------------------
Summary: "batterylow" and "batterycritical" may never happen
because of exact level check
Key: CB-4519
URL: https://issues.apache.org/jira/browse/CB-4519
Project: Apache Cordova
Issue Type: Bug
Components: CordovaJS, Plugin Battery Status
Affects Versions: 2.9.0
Reporter: Peter
Assignee: Filip Maj
The battery JavaScript code fires events when charge reaches some threshold
percentages 20 and 5:
{code}
if (level === 20 || level === 5) {
if (level === 20) {
cordova.fireWindowEvent("batterylow", info);
}
else {
cordova.fireWindowEvent("batterycritical", info);
}
}
{code}
But this logic makes an assumption that the level will at some point be
*exactly* 20 or 5. It is not a valid assumption. AFAIK there is no guarantee
that the device reports absolutely every percentage point 0-100, so if by bad
luck the device reports levels 25,22,19,16... then clearly level===20 was
missed so in this scenario the "batterylow" event the user was expecting is
simply not going to happen.
Ref
http://stackoverflow.com/questions/10189218/detect-changing-battery-state-at-every-percentage-in-android
IMO the code should be checking when the previous lvel versus current level has
crossed over the threshold, rather checking the current level is exactly equal
to the threshold value.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira