55import android .content .Intent ;
66import android .content .IntentFilter ;
77import android .os .BatteryManager ;
8+ import android .os .Build ;
89
910import org .havenapp .main .R ;
11+ import org .havenapp .main .Utils ;
1012import org .havenapp .main .model .EventTrigger ;
1113import org .havenapp .main .service .MonitorService ;
1214
@@ -28,41 +30,47 @@ public void onReceive(Context context, Intent intent) {
2830
2931 // explicitly check the intent action
3032 // avoids lint issue UnsafeProtectedBroadcastReceiver
31- int status = intent .getIntExtra (BatteryManager .EXTRA_STATUS , -1 );
32- boolean isCharging = status == BatteryManager .BATTERY_STATUS_CHARGING ||
33- status == BatteryManager .BATTERY_STATUS_FULL ;
34-
35- int chargePlug = intent .getIntExtra (BatteryManager .EXTRA_PLUGGED , -1 );
36- boolean usbCharge = chargePlug == BatteryManager .BATTERY_PLUGGED_USB ;
37- boolean acCharge = chargePlug == BatteryManager .BATTERY_PLUGGED_AC ;
38-
3933 if (intent .getAction () == null ) return ;
4034 switch (intent .getAction ()){
4135 case Intent .ACTION_POWER_CONNECTED :
42- isCharging = true ;
4336 break ;
4437 case Intent .ACTION_POWER_DISCONNECTED :
45- isCharging = false ;
4638 break ;
4739 default :
4840 return ;
4941 }
5042
5143 if (MonitorService .getInstance () != null
5244 && MonitorService .getInstance ().isRunning ()) {
53- MonitorService .getInstance ().alert (EventTrigger .POWER , context .getString (R .string .status_charging ) + isCharging );
45+ MonitorService .getInstance ().alert (EventTrigger .POWER ,
46+ Utils .getBatteryPercentage (context ) + "%" + " \n " +
47+ context .getString (R .string .power_source_status ) + " " +
48+ getBatteryStatus (context ));
5449 }
5550 }
5651
5752 //Ref: https://developer.android.com/training/monitoring-device-state/battery-monitoring.html
5853
59- private void getBatteryStatus (Context context ) {
54+ private String getBatteryStatus (Context context ) {
6055 IntentFilter ifilter = new IntentFilter (Intent .ACTION_BATTERY_CHANGED );
6156 Intent batteryStatus = context .registerReceiver (null , ifilter );
62-
63- // How are we charging?
57+ String battStatus ;
6458 int chargePlug = batteryStatus .getIntExtra (BatteryManager .EXTRA_PLUGGED , -1 );
6559 boolean usbCharge = chargePlug == BatteryManager .BATTERY_PLUGGED_USB ;
6660 boolean acCharge = chargePlug == BatteryManager .BATTERY_PLUGGED_AC ;
61+ boolean wirelessCharge = false ;
62+
63+ if (android .os .Build .VERSION .SDK_INT >= Build .VERSION_CODES .JELLY_BEAN_MR1 )
64+ wirelessCharge = chargePlug == BatteryManager .BATTERY_PLUGGED_WIRELESS ;
65+
66+ if (usbCharge )
67+ battStatus = context .getString (R .string .power_source_status_usb );
68+ else if (acCharge )
69+ battStatus = context .getString (R .string .power_source_status_ac );
70+ else if (wirelessCharge )
71+ battStatus = context .getString (R .string .power_source_status_wireless );
72+ else battStatus = context .getString (R .string .power_disconnected );
73+
74+ return battStatus ;
6775 }
6876}
0 commit comments