====== About the script ======
* Purpose : Show battery "charging" or "discharging" state
* Author : Abednego JS ( https://plus.google.com/u/0/118095355037125433304 )
* Link: https://plus.google.com/u/0/118095355037125433304/posts/UXfaG9YQyqX
====== How to use the script ======
This script will NOT showing anything when the power cable unplugged, just change the batstat value (in variable declaration or onReceive function) to change this. :D
* Create shortcut "Lightning Action - Do Nothing" to run this script.
* Disable Icon
* Set 'BattStatus-resume' script to event resume
* Set 'BattStatus-pause' script to event pause
This version edited by Pierre to minimize resource usage + updated without user intervention,
The old version can be found here: https://www.dropbox.com/s/c0hews7f01b7l01/_AJS_script_oldBATSTATE.txt?dl=0
:)
====== Script code ======
======= BattStatus-resume =======
LL.bindClass("android.os.BatteryManager");
LL.bindClass("android.content.BroadcastReceiver");
LL.bindClass("android.content.Intent");
LL.bindClass("android.content.IntentFilter");
// Update every 10s, this is a cyclic update. Improvement: use a receiver instead
var PERIOD = 10000;
var item = LL.getEvent().getItem();
function refresh() {
var ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
var batteryStatus = LL.getContext().registerReceiver(null, ifilter);
var status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
var isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
var chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
var usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
var acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
var batstat = "";
if (isCharging)
{
if (usbCharge)
{
batstat = "usb charging . . .";
}else
{
batstat = "AC charging . . .";
}
}
item.setLabel(batstat);
item.setTag("battSt", setTimeout(refresh, PERIOD));
}
refresh();
======= BattStatus-pause =======
// important: preserve the battery life and clear timeouts when the item is paused to avoid useless background activity
var id = LL.getEvent().getItem().getTag("battSt");
if(id != null) {
clearTimeout(parseInt(id));
}