Skip to content

Commit

Permalink
Change power alert content, include battery %
Browse files Browse the repository at this point in the history
Instead of 'Charging true' the alert displays time, power level & state/source
Reuse method from heartbeat notifications
  • Loading branch information
lukeswitz committed Feb 12, 2019
1 parent d8aa371 commit fcf108e
Showing 1 changed file with 22 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Build;

import org.havenapp.main.R;
import org.havenapp.main.Utils;
import org.havenapp.main.model.EventTrigger;
import org.havenapp.main.service.MonitorService;

Expand All @@ -28,41 +30,47 @@ public void onReceive(Context context, Intent intent) {

// explicitly check the intent action
// avoids lint issue UnsafeProtectedBroadcastReceiver
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;

int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;

if(intent.getAction() == null) return;
switch(intent.getAction()){
case Intent.ACTION_POWER_CONNECTED:
isCharging = true;
break;
case Intent.ACTION_POWER_DISCONNECTED:
isCharging = false;
break;
default:
return;
}

if (MonitorService.getInstance() != null
&& MonitorService.getInstance().isRunning()) {
MonitorService.getInstance().alert(EventTrigger.POWER, context.getString(R.string.status_charging) + isCharging );
MonitorService.getInstance().alert(EventTrigger.POWER,
Utils.getBatteryPercentage(context) + "%" + " \n" +
context.getString(R.string.power_source_status) + " " +
getBatteryStatus(context));
}
}

//Ref: https://developer.android.com/training/monitoring-device-state/battery-monitoring.html

private void getBatteryStatus(Context context) {
private String getBatteryStatus(Context context) {
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);

// How are we charging?
String battStatus;
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
boolean wirelessCharge = false;

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
wirelessCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_WIRELESS;

if (usbCharge)
battStatus = context.getString(R.string.power_source_status_usb);
else if (acCharge)
battStatus = context.getString(R.string.power_source_status_ac);
else if (wirelessCharge)
battStatus = context.getString(R.string.power_source_status_wireless);
else battStatus = context.getString(R.string.power_disconnected);

return battStatus;
}
}

0 comments on commit fcf108e

Please sign in to comment.