====== Differences ====== This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
script_battery_charging_state [2015/01/23 09:28] pierrox page moved from battery_charging_state |
script_battery_charging_state [2015/03/15 13:23] (current) jappie Script-name and tag-name |
||
|---|---|---|---|
| Line 8: | Line 8: | ||
| 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 | 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 to run this script, it'll be dynamic label where the script show battery state. Give it name "batv". | + | * 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 | ||
| - | Also assign script to running when displaying the page where "batv" placed (follow this step if user want to see battery state updated/checked when access spesific page instad of checking the state everytime). | + | This version edited by Pierre to minimize resource usage + updated without user intervention, |
| - | How to assign: Lightning Setting >> Current desktop >> Event & Actions >> Resumed >> Run a script [choose this script]. | + | The old version can be found here: https://www.dropbox.com/s/c0hews7f01b7l01/_AJS_script_oldBATSTATE.txt?dl=0 |
| - | + | :) | |
| - | Dictionary: | + | |
| - | + | ||
| - | var: | + | |
| - | + | ||
| - | item (get LLX item), batcon (get LLX context), batstat ( String value to edit the "batv" label), curd (get current page), curi (get "batv"); | + | |
| - | ifilter (filtering android intent), batterystatus (intent where activity to change batstat's value executed), text (temporary place used as bridge between batstat value to "batv" label); | + | |
| - | etc (status, isCharging, chargePlug, usbCharge, acCharge they're variable used to change batstat's value) | + | |
| - | + | ||
| - | function: | + | |
| - | + | ||
| - | onReceive(context, intent) = function to change batstat's value; | + | |
| - | manref () = function to manual update "batv" label | + | |
| ====== Script code ====== | ====== Script code ====== | ||
| + | ======= BattStatus-resume ======= | ||
| <code> | <code> | ||
| LL.bindClass("android.os.BatteryManager"); | LL.bindClass("android.os.BatteryManager"); | ||
| LL.bindClass("android.content.BroadcastReceiver"); | LL.bindClass("android.content.BroadcastReceiver"); | ||
| LL.bindClass("android.content.Intent"); | LL.bindClass("android.content.Intent"); | ||
| - | LL.bindClass("android.content.Context"); | ||
| LL.bindClass("android.content.IntentFilter"); | 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(); | var item = LL.getEvent().getItem(); | ||
| - | var batstat = ""; | ||
| - | var batcon = LL.getContext(); | ||
| - | var curd = LL.getCurrentDesktop(); | ||
| - | var curi = curd.getItemByName("batv"); | ||
| - | |||
| + | function refresh() { | ||
| var ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); | var ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); | ||
| - | var batteryStatus = batcon.registerReceiver(null, ifilter); | + | var batteryStatus = LL.getContext().registerReceiver(null, ifilter); |
| - | function onReceive(context, intent) { | + | var status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); |
| - | var status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); | + | var isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; |
| - | 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 chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); | + | var acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC; |
| - | 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 . . ."; | ||
| + | } | ||
| + | } | ||
| - | if (isCharging) | + | item.setLabel(batstat); |
| - | { | + | |
| - | if (usbCharge) | + | |
| - | { | + | |
| - | batstat = "usb charging . . ."; | + | |
| - | }else | + | |
| - | { | + | |
| - | batstat = "AC charging . . ."; | + | |
| - | } | + | |
| - | }else | + | |
| - | { | + | |
| - | batstat = ""; | + | |
| - | } | + | |
| - | + | ||
| - | + | ||
| - | } | + | |
| - | function manref() { | + | item.setTag("battSt", setTimeout(refresh, PERIOD)); |
| - | var text = batstat; | + | |
| - | curi.setLabel(text); | + | |
| } | } | ||
| - | onReceive(LL.getContext(), batteryStatus); | + | refresh(); |
| - | manref(); | + | </code> |
| + | |||
| + | ======= BattStatus-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("battSt"); | ||
| + | if(id != null) { | ||
| + | clearTimeout(parseInt(id)); | ||
| + | } | ||
| </code> | </code> | ||