Skip to content

Commit

Permalink
Merge branch 'lukeswitz-power_events'
Browse files Browse the repository at this point in the history
  • Loading branch information
n8fr8 committed Feb 28, 2019
2 parents 32b72ff + da2dd74 commit 4935f1e
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -26,22 +30,47 @@ 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;
}

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;
}
}
12 changes: 12 additions & 0 deletions src/main/java/org/havenapp/main/service/MonitorService.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
Expand Down Expand Up @@ -42,6 +43,7 @@
import org.havenapp.main.sensors.BarometerMonitor;
import org.havenapp.main.sensors.BumpMonitor;
import org.havenapp.main.sensors.MicrophoneMonitor;
import org.havenapp.main.sensors.PowerConnectionReceiver;

import java.util.ArrayList;
import java.util.Date;
Expand Down Expand Up @@ -79,6 +81,8 @@ public class MonitorService extends Service {
private BarometerMonitor mBaroMonitor = null;
private AmbientLightMonitor mLightMonitor = null;

private PowerConnectionReceiver mPowerReceiver = null;

private boolean mIsMonitoringActive = false;

/**
Expand Down Expand Up @@ -260,7 +264,13 @@ private void startSensors ()
if (!mPrefs.getMicrophoneSensitivity().equals(PreferenceManager.OFF))
mMicMonitor = new MicrophoneMonitor(this);

mPowerReceiver = new PowerConnectionReceiver();
// register our power status receivers
IntentFilter powerConnectedFilter = new IntentFilter(Intent.ACTION_POWER_CONNECTED);
registerReceiver(mPowerReceiver, powerConnectedFilter);

IntentFilter powerDisconnectedFilter = new IntentFilter(Intent.ACTION_POWER_DISCONNECTED);
registerReceiver(mPowerReceiver, powerDisconnectedFilter);
}

private void stopSensors ()
Expand Down Expand Up @@ -292,6 +302,8 @@ private void stopSensors ()
sender.stopHeartbeatTimer();
}
}

unregisterReceiver(mPowerReceiver);
}

/**
Expand Down
11 changes: 8 additions & 3 deletions src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,11 @@

<string name="action_cancel">Deactivate</string>
<string name="status_on">ACTIVE</string>
<string name="status_charging">Charging:</string>
<string name="power_source_status_usb">USB Charging</string>
<string name="power_source_status_wireless">Wireless Charging</string>
<string name="power_source_status_ac">AC Charging</string>
<string name="power_source_status">STATE:</string>
<string name="power_disconnected">Disconnected</string>
<string name="you_will_receive_a_text_when_the_app_hears_or_sees_something">You will receive a text when the app hears or sees something</string>
<string name="know_immediately_when_haven_detects_something">Know immediately when Haven detects something</string>
<string name="phone_saved">Phone number saved!</string>
Expand All @@ -78,7 +82,8 @@
<string name="data_light">LIGHT</string>
<string name="data_pressure">PRESSURE</string>
<string name="data_power">POWER</string>
<string name="share_event_action">Share event…</string>
<string name="data_battery">BATTERY</string>
<string name="share_event_action">Share event...</string>
<string name="signal_test_message">This is a test message from Haven</string>
<string name="send_test_message">Send Test Message</string>
<string name="verify">Verify</string>
Expand All @@ -97,7 +102,7 @@
<string name="sensor_accel">Motion (Accelerometer)</string>
<string name="sensor_camera">Motion (Camera)</string>
<string name="sensor_sound">Microphone</string>
<string name="sensor_power">USB Power</string>
<string name="sensor_power">Power</string>
<string name="sensor_bump">Bump (Accelerometer)</string>
<string name="sensor_camera_video">Motion (Video)</string>
<string name="sensor_heartbeat">Heartbeat</string>
Expand Down

0 comments on commit 4935f1e

Please sign in to comment.