====== About the script ======
* Purpose : Show Battery Widget
* Author : Abednego JS ( https://plus.google.com/u/0/118095355037125433304 )
* Altered by: Jappie Toutenhoofd (https://plus.google.com/+JappieToutenhoofd)
* Link: https://plus.google.com/u/0/118095355037125433304/posts/UXfaG9YQyqX
====== How to use the script ======
* Install [[https://play.google.com/store/apps/details?id=com.trianguloy.llscript.repository|Repository Importer - LLScript]] to import both script parts (**BattW-resume** and **BattW-pause**) directly from that page
* Create dynamic content - **badge**
* Make sure Expert mode is on in the LL settings (for expert events)
* Set event resumed to run script **BattW-resume**
* Set event paused to run script **BattW-pause**
* Resize to a desired fit
* Decrease upper and bottom **margins** to **-8** to fit a small text on a very thin bar
====== Script code ======
======= BattW-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 level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
var scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -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 batperc = Math.floor((100*level)/scale);
var batstat = "";
if (isCharging)
{
if (usbCharge)
{ batstat = "usb charging . . .";
}else
{ batstat = "AC charging . . .";
}
}else
{ batstat = "discharged to " + batperc;
}
item.setLabel(batstat);
var batW = item.getWidth();
var batH = item.getHeight();
var klrR = Math.floor( ( 100 - batperc) * 2.55);
var klrG = Math.floor( ( 0 + batperc) * 2.55);
var p = new Paint();
p.setAntiAlias(true);
p.setStyle(Paint.Style.FILL);
p.setColor(Color.rgb(klrR,klrG,0));
var img = LL.createImage( batW,batH);
item.setBoxBackground(img, "ns");
var c = img.draw();
c.drawRect(0, 0, (batW * (batperc/100)), batH, p);
img.save();
img.update();
item.setTag("battW", setTimeout(refresh, PERIOD));
}
refresh();
======= BattW-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("battW");
if(id != null)
{ clearTimeout(parseInt(id));
}