Skip to content

Commit

Permalink
Add events for later use
Browse files Browse the repository at this point in the history
Add heartbeat preferences for active/delay time
  • Loading branch information
lukeswitz committed Mar 18, 2018
1 parent 8a1b244 commit 114d20d
Show file tree
Hide file tree
Showing 5 changed files with 178 additions and 57 deletions.
132 changes: 76 additions & 56 deletions src/main/java/org/havenapp/main/PreferenceManager.java
Expand Up @@ -28,10 +28,10 @@


public class PreferenceManager {

private SharedPreferences appSharedPrefs;
private Editor prefsEditor;

public static final String LOW = "Low";
public static final String MEDIUM = "Medium";
public static final String HIGH = "High";
Expand All @@ -41,7 +41,7 @@ public class PreferenceManager {
public static final String FRONT = "Front";
public static final String BACK = "Back";
public static final String NONE = "None";

private static final String APP_SHARED_PREFS="org.havenapp.main";
private static final String ACCELEROMETER_ACTIVE="accelerometer_active";
private static final String ACCELEROMETER_SENSITIVITY="accelerometer_sensibility";
Expand All @@ -50,6 +50,8 @@ public class PreferenceManager {
public static final String CAMERA_SENSITIVITY="camera_sensitivity";
public static final String CONFIG_MOVEMENT ="config_movement";
private static final String FLASH_ACTIVE="flash_active";
public static final String HEARTBEAT_MONITOR_ACTIVE="heartbeat_monitor_active";
public static final String HEARTBEAT_MONITOR_DELAY="heartbeat_monitor_delay";
private static final String MICROPHONE_ACTIVE="microphone_active";
private static final String MICROPHONE_SENSITIVITY="microphone_sensitivity";
public static final String CONFIG_SOUND = "config_sound";
Expand All @@ -60,10 +62,10 @@ public class PreferenceManager {
public static final String VERIFY_SIGNAL = "verify_signal";
public static final String SEND_SMS = "send_sms";
private static final String UNLOCK_CODE="unlock_code";

private static final String ACCESS_TOKEN="access_token";
private static final String DELEGATED_ACCESS_TOKEN="deferred_access_token";

private static final String PHONE_ID="phone_id";
private static final String TIMER_DELAY="timer_delay";
private static final String VIDEO_LENGTH="video_length";
Expand All @@ -83,7 +85,7 @@ public class PreferenceManager {
public static final String DISABLE_BATTERY_OPT = "config_battery_optimizations";

private Context context;

public PreferenceManager(Context context) {
this.context = context;
this.appSharedPrefs = context.getSharedPreferences(APP_SHARED_PREFS, Activity.MODE_PRIVATE);
Expand Down Expand Up @@ -139,21 +141,21 @@ public String getRemoteAccessCredential () {
}

public void activateAccelerometer(boolean active) {
prefsEditor.putBoolean(ACCELEROMETER_ACTIVE, active);
prefsEditor.commit();
prefsEditor.putBoolean(ACCELEROMETER_ACTIVE, active);
prefsEditor.commit();
}

public boolean getAccelerometerActivation() {
return appSharedPrefs.getBoolean(ACCELEROMETER_ACTIVE, true);
return appSharedPrefs.getBoolean(ACCELEROMETER_ACTIVE, true);
}

public void setAccelerometerSensitivity(String sensitivity) {
prefsEditor.putString(ACCELEROMETER_SENSITIVITY, sensitivity);
prefsEditor.commit();
prefsEditor.putString(ACCELEROMETER_SENSITIVITY, sensitivity);
prefsEditor.commit();
}

public String getAccelerometerSensitivity() {
return appSharedPrefs.getString(ACCELEROMETER_SENSITIVITY, HIGH);
return appSharedPrefs.getString(ACCELEROMETER_SENSITIVITY, HIGH);
}

public void setActivateVideoMonitoring(boolean active) {
Expand All @@ -166,76 +168,94 @@ public boolean getVideoMonitoringActive() {
}

public void activateCamera(boolean active) {
prefsEditor.putBoolean(CAMERA_ACTIVE, active);
prefsEditor.commit();
prefsEditor.putBoolean(CAMERA_ACTIVE, active);
prefsEditor.commit();
}

public boolean getCameraActivation() {
return appSharedPrefs.getBoolean(CAMERA_ACTIVE, true);
return appSharedPrefs.getBoolean(CAMERA_ACTIVE, true);
}

public void setCamera(String camera) {
prefsEditor.putString(CAMERA, camera);
prefsEditor.commit();
prefsEditor.putString(CAMERA, camera);
prefsEditor.commit();
}

public String getCamera() {
return appSharedPrefs.getString(CAMERA, FRONT);
return appSharedPrefs.getString(CAMERA, FRONT);
}

public void setCameraSensitivity(int sensitivity) {
prefsEditor.putInt(CAMERA_SENSITIVITY, sensitivity);
prefsEditor.commit();
prefsEditor.putInt(CAMERA_SENSITIVITY, sensitivity);
prefsEditor.commit();
}

public int getCameraSensitivity() {
return appSharedPrefs.getInt(CAMERA_SENSITIVITY, LuminanceMotionDetector.MOTION_MEDIUM);
return appSharedPrefs.getInt(CAMERA_SENSITIVITY, LuminanceMotionDetector.MOTION_MEDIUM);
}

public void activateFlash(boolean active) {
prefsEditor.putBoolean(FLASH_ACTIVE, active);
prefsEditor.commit();
prefsEditor.putBoolean(FLASH_ACTIVE, active);
prefsEditor.commit();
}

public boolean getFlashActivation() {
return appSharedPrefs.getBoolean(FLASH_ACTIVE, false);
return appSharedPrefs.getBoolean(FLASH_ACTIVE, false);
}

public void activateMicrophone(boolean active) {
prefsEditor.putBoolean(MICROPHONE_ACTIVE, active);
prefsEditor.commit();
prefsEditor.putBoolean(MICROPHONE_ACTIVE, active);
prefsEditor.commit();
}

public boolean getMicrophoneActivation() {
return appSharedPrefs.getBoolean(MICROPHONE_ACTIVE, true);
return appSharedPrefs.getBoolean(MICROPHONE_ACTIVE, true);
}

public void setMicrophoneSensitivity(String sensitivity) {
prefsEditor.putString(MICROPHONE_SENSITIVITY, sensitivity);
prefsEditor.commit();
prefsEditor.putString(MICROPHONE_SENSITIVITY, sensitivity);
prefsEditor.commit();
}

public String getMicrophoneSensitivity() {
return appSharedPrefs.getString(MICROPHONE_SENSITIVITY, MEDIUM);
return appSharedPrefs.getString(MICROPHONE_SENSITIVITY, MEDIUM);
}

public void activateSms(boolean active) {
prefsEditor.putBoolean(SMS_ACTIVE, active);
prefsEditor.commit();
prefsEditor.putBoolean(SMS_ACTIVE, active);
prefsEditor.commit();
}

public boolean getSmsActivation() {
return appSharedPrefs.getBoolean(SMS_ACTIVE, false);
return appSharedPrefs.getBoolean(SMS_ACTIVE, false);
}

public void setSmsNumber(String number) {

prefsEditor.putString(SMS_NUMBER, number);
prefsEditor.commit();
prefsEditor.putString(SMS_NUMBER, number);
prefsEditor.commit();
}

public String getSmsNumber() {
return appSharedPrefs.getString(SMS_NUMBER, "");
return appSharedPrefs.getString(SMS_NUMBER, "");
}

public void activateHeartbeat(boolean active) {
prefsEditor.putBoolean(HEARTBEAT_MONITOR_ACTIVE, active);
prefsEditor.commit();
}

public void setHeartbeatMonitorNotifications (int notificationTimeMs) {
prefsEditor.putInt(HEARTBEAT_MONITOR_DELAY,notificationTimeMs);
prefsEditor.commit();
}

public boolean getHeartbeatActive() {
return appSharedPrefs.getBoolean(HEARTBEAT_MONITOR_ACTIVE, false);
}

public int getHeartbeatNotificationTimeMs () {
return appSharedPrefs.getInt(HEARTBEAT_MONITOR_DELAY,300000);
}

public int getTimerDelay ()
Expand All @@ -261,9 +281,9 @@ public void setMonitoringTime (int delay)
}

public String getDirPath() {
return DIR_PATH;
return DIR_PATH;
}

public String getSMSText() {
return context.getString(R.string.intrusion_detected);
}
Expand Down
62 changes: 61 additions & 1 deletion src/main/java/org/havenapp/main/SettingsFragment.java
Expand Up @@ -120,6 +120,25 @@ public void onCreatePreferencesFix(Bundle bundle, String s) {
findPreference(PreferenceManager.NOTIFICATION_TIME).setSummary(preferences.getNotificationTimeMs()/60000 + " " + getString(R.string.minutes));
}

if (preferences.getHeartbeatActive())
{
((SwitchPreferenceCompat) findPreference(PreferenceManager.HEARTBEAT_MONITOR_ACTIVE)).setChecked(true);
boolean heartOn = ((SwitchPreferenceCompat) findPreference(PreferenceManager.HEARTBEAT_MONITOR_ACTIVE)).isChecked();
boolean isMonitoring = preferences.getHeartbeatActive();
if (heartOn || isMonitoring) {
preferences.activateHeartbeat(true);
findPreference(PreferenceManager.HEARTBEAT_MONITOR_DELAY).setSummary(preferences.getHeartbeatNotificationTimeMs() / 60000 + " " + getString(R.string.minutes));
}
else{
findPreference(PreferenceManager.HEARTBEAT_MONITOR_DELAY).setSummary(R.string.heartbeat_time_dialog);
}
}

if (preferences.getHeartbeatNotificationTimeMs()>0 )
{
findPreference(PreferenceManager.HEARTBEAT_MONITOR_DELAY).setSummary(preferences.getHeartbeatNotificationTimeMs()/60000 + " " + getString(R.string.minutes));
}

Preference prefCameraSensitivity = findPreference(PreferenceManager.CAMERA_SENSITIVITY);
prefCameraSensitivity.setOnPreferenceClickListener(preference -> {
startActivity(new Intent(mActivity, CameraConfigureActivity.class));
Expand Down Expand Up @@ -188,8 +207,11 @@ protected void save() {

preferences.setActivateVideoMonitoring(videoMonitoringActive);

boolean remoteAccessActive = ((SwitchPreferenceCompat) findPreference(PreferenceManager.REMOTE_ACCESS_ACTIVE)).isChecked();
boolean heartbeatMonitorActive = ((SwitchPreferenceCompat) findPreference(PreferenceManager.HEARTBEAT_MONITOR_ACTIVE)).isChecked();

preferences.activateHeartbeat(heartbeatMonitorActive);

boolean remoteAccessActive = ((SwitchPreferenceCompat) findPreference(PreferenceManager.REMOTE_ACCESS_ACTIVE)).isChecked();
preferences.activateRemoteAccess(remoteAccessActive);
String password = ((EditTextPreference) findPreference(PreferenceManager.REMOTE_ACCESS_CRED)).getText();

Expand Down Expand Up @@ -351,6 +373,44 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin
}
break;
}
case PreferenceManager.HEARTBEAT_MONITOR_ACTIVE: {
boolean heartbeatActive = ((SwitchPreferenceCompat) findPreference(PreferenceManager.HEARTBEAT_MONITOR_ACTIVE)).isChecked();
boolean isMonitoring = preferences.getHeartbeatActive();
if (heartbeatActive && !isMonitoring)
{
preferences.activateHeartbeat(true);
findPreference(PreferenceManager.HEARTBEAT_MONITOR_DELAY).setSummary(preferences.getHeartbeatNotificationTimeMs() / 60000 + " " + getString(R.string.minutes));
SignalSender sender = SignalSender.getInstance(getContext(), preferences.getSignalUsername());
sender.startHeartbeatTimer(preferences.getHeartbeatNotificationTimeMs());
}
else if (!heartbeatActive && isMonitoring)
{
preferences.activateHeartbeat(false);
findPreference(PreferenceManager.HEARTBEAT_MONITOR_DELAY).setSummary(R.string.hearbeat_monitor_dialog);
SignalSender sender = SignalSender.getInstance(getContext(), preferences.getSignalUsername());
sender.stopHeartbeatTimer();
}
break;
}
case PreferenceManager.HEARTBEAT_MONITOR_DELAY: {
try {
String text = ((EditTextPreference) findPreference(PreferenceManager.HEARTBEAT_MONITOR_DELAY)).getText();
int notificationTimeMs = Integer.parseInt(text) * 60000;
preferences.setHeartbeatMonitorNotifications(notificationTimeMs);
findPreference(PreferenceManager.HEARTBEAT_MONITOR_DELAY).setSummary(preferences.getHeartbeatNotificationTimeMs() / 60000 + " " + getString(R.string.minutes));

boolean heartbeatActive = ((SwitchPreferenceCompat) findPreference(PreferenceManager.HEARTBEAT_MONITOR_ACTIVE)).isChecked();
if (heartbeatActive) {
SignalSender sender = SignalSender.getInstance(getContext(), preferences.getSignalUsername());
sender.stopHeartbeatTimer();
sender.startHeartbeatTimer(preferences.getHeartbeatNotificationTimeMs());
}

} catch (NumberFormatException ne) {
//error parsing user value
}
break;
}
}
}

Expand Down
9 changes: 9 additions & 0 deletions src/main/java/org/havenapp/main/model/EventTrigger.java
Expand Up @@ -49,6 +49,7 @@ public class EventTrigger extends SugarRecord {
* Power change detected message
*/
public static final int POWER = 5;

/**
* Significant motion detected message
*/
Expand All @@ -58,6 +59,11 @@ public class EventTrigger extends SugarRecord {
* Significant motion detected message
*/
public static final int CAMERA_VIDEO = 7;

/**
* Heartbeat notification message
*/
public static final int HEART = 8;


public EventTrigger ()
Expand Down Expand Up @@ -120,6 +126,9 @@ public String getStringType (Context context)
case EventTrigger.CAMERA_VIDEO:
sType = context.getString(R.string.sensor_camera_video);
break;
case EventTrigger.HEART:
sType = context.getString(R.string.sensor_heartbeat);
break;
default:
sType = context.getString(R.string.sensor_unknown);
}
Expand Down
16 changes: 16 additions & 0 deletions src/main/res/values/strings.xml
Expand Up @@ -78,6 +78,9 @@
<string name="save_number">Save Number</string>

<string name="action_cancel">Deactivate</string>
<string name="power_optim_status_on">Optimization Activated</string>
<string name="power_optim_status_off">Optimization Deactivated</string>
<string name="power_optim_status_unsupported">Unsupported for this device</string>
<string name="status_on">ACTIVE</string>
<string name="status_charging">Charging:</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>
Expand Down Expand Up @@ -109,10 +112,12 @@
<string name="sensor_power">USB Power</string>
<string name="sensor_bump">Bump (Accelerometer)</string>
<string name="sensor_camera_video">Motion (Video)</string>
<string name="sensor_heartbeat">Heartbeat</string>
<string name="sensor_unknown">Unknown</string>

<string name="settings">Settings</string>
<string name="remote_access_onion_error">This feature requires the Orbot: Tor for Android app to be installed.</string>
<string name="remote_access_onion_error_pw">This feature requires you to set a remote password.</string>

<!--Preference Settings -->
<string name="hint_number" translatable="false">+12125551212</string>
Expand All @@ -139,10 +144,21 @@
<string name="notification_time_summary">Only send notifications at configured interval</string>
<string name="notification_time_dialog">Enter time (minutes) to limit notifications. \'0\' to send every notification.</string>
<string name="minutes">minutes(s)</string>
<string name="seconds">second(s)</string>
<string name="keep_watch">Keep Watch!</string>
<string name="camera_sensitivity_tip">Switch camera or use the slider to adjust motion detection sensitivity</string>
<string name="disable_battery_opt_title">Disable Battery Optimizations</string>
<string name="disable_battery_opt_summary">Allow app to run when screen is off</string>

<string name="hearbeat_monitor">Heartbeat Notifications</string>
<string name="hearbeat_monitor_enable">Enable Heartbeat Monitor</string>
<string name="hearbeat_monitor_summary">Set Monitor Alert Interval</string>
<string name="heartbeat_time_dialog">Enter time (minutes) to limit heartbeat notifications. Minimum delay is 5.</string>
<string name="hearbeat_monitor_dialog">Send monitor status icon messages</string>
<string name="thumbsUp"><node>&#x1f44d;</node></string>
<string name="beatingHeart"><node>&#x1F493;</node></string>
<string name="brokenHeart"><node>&#x1F494;</node></string>
<string name="beatingHeartUnicode">0x1F493</string>
<string name="brokenHeartUnicode">0x1F494</string>

</resources>

0 comments on commit 114d20d

Please sign in to comment.