diff --git a/src/main/java/org/havenapp/main/sensors/PowerConnectionReceiver.java b/src/main/java/org/havenapp/main/sensors/PowerConnectionReceiver.java
index fb584bc4..6d474fa8 100644
--- a/src/main/java/org/havenapp/main/sensors/PowerConnectionReceiver.java
+++ b/src/main/java/org/havenapp/main/sensors/PowerConnectionReceiver.java
@@ -3,8 +3,12 @@
import android.content.BroadcastReceiver;
import android.content.Context;
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;
@@ -26,14 +30,11 @@ public void onReceive(Context context, Intent intent) {
// explicitly check the intent action
// avoids lint issue UnsafeProtectedBroadcastReceiver
- boolean isCharging;
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;
@@ -41,7 +42,35 @@ public void onReceive(Context context, Intent intent) {
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 String getBatteryStatus(Context context) {
+ IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+ Intent batteryStatus = context.registerReceiver(null, ifilter);
+ 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;
+ }
}
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 45483516..838cb6d9 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -69,7 +69,11 @@
Deactivate
ACTIVE
- Charging:
+ USB Charging
+ Wireless Charging
+ AC Charging
+ STATE:
+ Disconnected
You will receive a text when the app hears or sees something
Know immediately when Haven detects something
Phone number saved!
@@ -78,7 +82,8 @@
LIGHT
PRESSURE
POWER
- Share event…
+ BATTERY
+ Share event...
This is a test message from Haven
Send Test Message
Verify
@@ -97,7 +102,7 @@
Motion (Accelerometer)
Motion (Camera)
Microphone
- USB Power
+ Power
Bump (Accelerometer)
Motion (Video)
Heartbeat