User Tools

Site Tools


script_battery_widget

====== 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 ======= <code> 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(); </code> ======= BattW-pause ======= <code> // 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)); } </code>

script_battery_widget.txt · Last modified: 2015/11/02 23:34 by clockworkbastard