diff --git a/app/src/apkFlavor/AndroidManifest.xml b/app/src/apkFlavor/AndroidManifest.xml index 728d967..3721c5d 100644 --- a/app/src/apkFlavor/AndroidManifest.xml +++ b/app/src/apkFlavor/AndroidManifest.xml @@ -145,7 +145,7 @@ - + = 180 && Math.abs(dpt) >= 180 && Math.abs(drt) >= 180) { - Miscellaneous.messageBox(getResources().getString(R.string.warning), getResources().getString(R.string.toleranceOf180OnlyAllowedIn2Fields), ActivityManageTriggerDevicePosition.this).show(); + Miscellaneous.messageBox(getResources().getString(R.string.warning), getResources().getString(R.string.toleranceOf180OnlyAllowedIn2Fields), ActivityManageTriggerDeviceOrientation.this).show(); return false; } } @@ -251,14 +251,14 @@ public class ActivityManageTriggerDevicePosition extends Activity protected void onResume() { super.onResume(); - DevicePositionListener.getInstance().startSensorFromConfigActivity(ActivityManageTriggerDevicePosition.this, this); + DeviceOrientationListener.getInstance().startSensorFromConfigActivity(ActivityManageTriggerDeviceOrientation.this, this); } @Override protected void onPause() { super.onPause(); - DevicePositionListener.getInstance().stopSensorFromConfigActivity(); + DeviceOrientationListener.getInstance().stopSensorFromConfigActivity(); } public class InputFilterMinMax implements InputFilter diff --git a/app/src/main/java/com/jens/automation2/ReceiverCoordinator.java b/app/src/main/java/com/jens/automation2/ReceiverCoordinator.java index ef2f2d5..b11b52e 100644 --- a/app/src/main/java/com/jens/automation2/ReceiverCoordinator.java +++ b/app/src/main/java/com/jens/automation2/ReceiverCoordinator.java @@ -10,7 +10,7 @@ import com.jens.automation2.receivers.AutomationListenerInterface; import com.jens.automation2.receivers.BatteryReceiver; import com.jens.automation2.receivers.BluetoothReceiver; import com.jens.automation2.receivers.ConnectivityReceiver; -import com.jens.automation2.receivers.DevicePositionListener; +import com.jens.automation2.receivers.DeviceOrientationListener; import com.jens.automation2.receivers.HeadphoneJackListener; import com.jens.automation2.receivers.NoiseListener; import com.jens.automation2.receivers.PhoneStatusListener; @@ -47,7 +47,7 @@ public class ReceiverCoordinator BatteryReceiver.class, BluetoothReceiver.class, ConnectivityReceiver.class, - DevicePositionListener.class, + DeviceOrientationListener.class, HeadphoneJackListener.class, //NfcReceiver.class, NoiseListener.class, @@ -63,7 +63,7 @@ public class ReceiverCoordinator BatteryReceiver.class, BluetoothReceiver.class, ConnectivityReceiver.class, - DevicePositionListener.class, + DeviceOrientationListener.class, HeadphoneJackListener.class, //NfcReceiver.class, NoiseListener.class, @@ -167,8 +167,8 @@ public class ReceiverCoordinator if(Rule.isAnyRuleUsing(Trigger.Trigger_Enum.process_started_stopped)) ProcessListener.startProcessListener(AutomationService.getInstance()); - if(Rule.isAnyRuleUsing(Trigger.Trigger_Enum.devicePosition)) - DevicePositionListener.getInstance().startListener(AutomationService.getInstance()); + if(Rule.isAnyRuleUsing(Trigger.Trigger_Enum.deviceOrientation)) + DeviceOrientationListener.getInstance().startListener(AutomationService.getInstance()); try { @@ -220,7 +220,7 @@ public class ReceiverCoordinator BluetoothReceiver.stopBluetoothReceiver(); HeadphoneJackListener.getInstance().stopListener(AutomationService.getInstance()); - DevicePositionListener.getInstance().stopListener(AutomationService.getInstance()); + DeviceOrientationListener.getInstance().stopListener(AutomationService.getInstance()); } catch(Exception e) { @@ -355,21 +355,21 @@ public class ReceiverCoordinator } } - if(Rule.isAnyRuleUsing(Trigger.Trigger_Enum.devicePosition)) + if(Rule.isAnyRuleUsing(Trigger.Trigger_Enum.deviceOrientation)) { - if(!DevicePositionListener.getInstance().isListenerRunning()) + if(!DeviceOrientationListener.getInstance().isListenerRunning()) { Miscellaneous.logEvent("i", "DevicePositionListener", "Starting DevicePositionListener because used in a new/changed rule.", 4); // if(DevicePositionListener.getInstance().haveAllPermission()) - DevicePositionListener.getInstance().startListener(AutomationService.getInstance()); + DeviceOrientationListener.getInstance().startListener(AutomationService.getInstance()); } } else { - if(DevicePositionListener.getInstance().isListenerRunning()) + if(DeviceOrientationListener.getInstance().isListenerRunning()) { Miscellaneous.logEvent("i", "DevicePositionListener", "Shutting down DevicePositionListener because not used in any rule.", 4); - DevicePositionListener.getInstance().stopListener(AutomationService.getInstance()); + DeviceOrientationListener.getInstance().stopListener(AutomationService.getInstance()); } } diff --git a/app/src/main/java/com/jens/automation2/Settings.java b/app/src/main/java/com/jens/automation2/Settings.java index 21d7a7b..d1941d7 100644 --- a/app/src/main/java/com/jens/automation2/Settings.java +++ b/app/src/main/java/com/jens/automation2/Settings.java @@ -56,7 +56,7 @@ public class Settings implements SharedPreferences public static boolean rememberLastActivePoi; public static int locationRingBufferSize; public static long timeBetweenProcessMonitorings; - public static long acceptDevicePositionSignalEveryX_MilliSeconds; + public static long acceptDeviceOrientationSignalEveryX_MilliSeconds; public static int activityDetectionFrequency; public static int activityDetectionRequiredProbability; public static boolean privacyLocationing; @@ -238,7 +238,7 @@ public class Settings implements SharedPreferences lengthOfNoiseLevelMeasurements = Long.parseLong(prefs.getString("lengthOfNoiseLevelMeasurements", String.valueOf(default_lengthOfNoiseLevelMeasurements))); referenceValueForNoiseLevelMeasurements = Long.parseLong(prefs.getString("referenceValueForNoiseLevelMeasurements", String.valueOf(default_referenceValueForNoiseLevelMeasurements))); timeBetweenProcessMonitorings = Long.parseLong(prefs.getString("timeBetweenProcessMonitorings", String.valueOf(default_timeBetweenProcessMonitorings))); - acceptDevicePositionSignalEveryX_MilliSeconds = Long.parseLong(prefs.getString("acceptDevicePositionSignalEveryX_MilliSeconds", String.valueOf(default_acceptDevicePositionSignalEveryX_MilliSeconds))); + acceptDeviceOrientationSignalEveryX_MilliSeconds = Long.parseLong(prefs.getString("acceptDevicePositionSignalEveryX_MilliSeconds", String.valueOf(default_acceptDevicePositionSignalEveryX_MilliSeconds))); httpAcceptAllCertificates = prefs.getBoolean("httpAcceptAllCertificates", default_httpAcceptAllCertificates); httpAttempts = Integer.parseInt(prefs.getString("httpAttempts", String.valueOf(default_httpAttempts))); @@ -532,7 +532,7 @@ public class Settings implements SharedPreferences editor.putString("httpAttemptGap", String.valueOf(httpAttemptGap)); editor.putString("locationRingBufferSize", String.valueOf(locationRingBufferSize)); editor.putString("timeBetweenProcessMonitorings", String.valueOf(timeBetweenProcessMonitorings)); - editor.putString("acceptDevicePositionSignalEveryX_MilliSeconds", String.valueOf(acceptDevicePositionSignalEveryX_MilliSeconds)); + editor.putString("acceptDevicePositionSignalEveryX_MilliSeconds", String.valueOf(acceptDeviceOrientationSignalEveryX_MilliSeconds)); editor.putString("activityDetectionFrequency", String.valueOf(activityDetectionFrequency)); editor.putString("activityDetectionRequiredProbability", String.valueOf(activityDetectionRequiredProbability)); editor.putBoolean("privacyLocationing", privacyLocationing); diff --git a/app/src/main/java/com/jens/automation2/Trigger.java b/app/src/main/java/com/jens/automation2/Trigger.java index 1d8d8a1..fcf9f1b 100644 --- a/app/src/main/java/com/jens/automation2/Trigger.java +++ b/app/src/main/java/com/jens/automation2/Trigger.java @@ -1,10 +1,7 @@ package com.jens.automation2; -import static android.content.Context.DEVICE_POLICY_SERVICE; - import android.bluetooth.BluetoothDevice; import android.content.Context; -import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.service.notification.StatusBarNotification; @@ -18,7 +15,7 @@ import com.jens.automation2.location.WifiBroadcastReceiver; import com.jens.automation2.receivers.BatteryReceiver; import com.jens.automation2.receivers.BluetoothReceiver; import com.jens.automation2.receivers.ConnectivityReceiver; -import com.jens.automation2.receivers.DevicePositionListener; +import com.jens.automation2.receivers.DeviceOrientationListener; import com.jens.automation2.receivers.HeadphoneJackListener; import com.jens.automation2.receivers.NfcReceiver; import com.jens.automation2.receivers.NoiseListener; @@ -112,8 +109,8 @@ public class Trigger if(!checkNotification()) result = false; break; - case devicePosition: - if(!checkDevicePosition()) + case deviceOrientation: + if(!checkDeviceOrientation()) result = false; break; case activityDetection: @@ -276,18 +273,18 @@ public class Trigger return true; } - boolean checkDevicePosition() + boolean checkDeviceOrientation() { - String devicePositionPieces[] = getTriggerParameter2().split(Trigger.triggerParameter2Split); - float desiredAzimuth = Float.parseFloat(devicePositionPieces[0]); - float desiredAzimuthTolerance = Float.parseFloat(devicePositionPieces[1]); - float desiredPitch = Float.parseFloat(devicePositionPieces[2]); - float desiredPitchTolerance = Float.parseFloat(devicePositionPieces[3]); - float desiredRoll = Float.parseFloat(devicePositionPieces[4]); - float desiredRollTolerance = Float.parseFloat(devicePositionPieces[5]); - float currentAzimuth = DevicePositionListener.getInstance().getAzimuth(); - float currentPitch = DevicePositionListener.getInstance().getPitch(); - float currentRoll = DevicePositionListener.getInstance().getRoll(); + String deviceOrientationPieces[] = getTriggerParameter2().split(Trigger.triggerParameter2Split); + float desiredAzimuth = Float.parseFloat(deviceOrientationPieces[0]); + float desiredAzimuthTolerance = Float.parseFloat(deviceOrientationPieces[1]); + float desiredPitch = Float.parseFloat(deviceOrientationPieces[2]); + float desiredPitchTolerance = Float.parseFloat(deviceOrientationPieces[3]); + float desiredRoll = Float.parseFloat(deviceOrientationPieces[4]); + float desiredRollTolerance = Float.parseFloat(deviceOrientationPieces[5]); + float currentAzimuth = DeviceOrientationListener.getInstance().getAzimuth(); + float currentPitch = DeviceOrientationListener.getInstance().getPitch(); + float currentRoll = DeviceOrientationListener.getInstance().getRoll(); if( desiredAzimuthTolerance < 180 @@ -299,7 +296,7 @@ public class Trigger ) ) { - Miscellaneous.logEvent("i", "DevicePosition", "Trigger doesn\'t apply. Azimuth outside of tolerance area.", 5); + Miscellaneous.logEvent("i", "DeviceOrientation", "Trigger doesn\'t apply. Azimuth outside of tolerance area.", 5); if(getTriggerParameter()) return false; else @@ -316,7 +313,7 @@ public class Trigger ) ) { - Miscellaneous.logEvent("i", "DevicePosition", "Trigger doesn\'t apply. Pitch outside of tolerance area.", 5); + Miscellaneous.logEvent("i", "DeviceOrientation", "Trigger doesn\'t apply. Pitch outside of tolerance area.", 5); if(getTriggerParameter()) return false; else @@ -333,7 +330,7 @@ public class Trigger ) ) { - Miscellaneous.logEvent("i", "DevicePosition", "Trigger doesn\'t apply. Roll outside of tolerance area.", 5); + Miscellaneous.logEvent("i", "DeviceOrientation", "Trigger doesn\'t apply. Roll outside of tolerance area.", 5); if(getTriggerParameter()) return false; else @@ -982,7 +979,7 @@ public class Trigger */ public enum Trigger_Enum { - pointOfInterest, timeFrame, charging, batteryLevel, usb_host_connection, speed, noiseLevel, wifiConnection, process_started_stopped, airplaneMode, roaming, nfcTag, activityDetection, bluetoothConnection, headsetPlugged, notification, devicePosition, phoneCall; //phoneCall always needs to be at the very end because of Google's shitty so called privacy + pointOfInterest, timeFrame, charging, batteryLevel, usb_host_connection, speed, noiseLevel, wifiConnection, process_started_stopped, airplaneMode, roaming, nfcTag, activityDetection, bluetoothConnection, headsetPlugged, notification, deviceOrientation, phoneCall; //phoneCall always needs to be at the very end because of Google's shitty so called privacy public String getFullName(Context context) { @@ -1022,8 +1019,8 @@ public class Trigger return context.getResources().getString(R.string.triggerHeadsetPlugged); case notification: return context.getResources().getString(R.string.notification); - case devicePosition: - return context.getResources().getString(R.string.devicePosition); + case deviceOrientation: + return context.getResources().getString(R.string.deviceOrientation); default: return "Unknown"; } @@ -1493,8 +1490,8 @@ public class Trigger setTriggerParameter2("-1" + triggerParameter2Split + directionEquals + triggerParameter2Split + triggerParameter2Split + directionEquals + triggerParameter2Split + triggerParameter2Split); } break; - case devicePosition: - returnString.append(Miscellaneous.getAnyContext().getString(R.string.deviceIsInCertainPosition)); + case deviceOrientation: + returnString.append(Miscellaneous.getAnyContext().getString(R.string.deviceIsInCertainOrientation)); break; default: returnString.append("error"); diff --git a/app/src/main/java/com/jens/automation2/XmlFileInterface.java b/app/src/main/java/com/jens/automation2/XmlFileInterface.java index cf33719..fb11428 100644 --- a/app/src/main/java/com/jens/automation2/XmlFileInterface.java +++ b/app/src/main/java/com/jens/automation2/XmlFileInterface.java @@ -891,6 +891,8 @@ public class XmlFileInterface if(triggerEventString.equals("process_started_stopped") | triggerEventString.equals("process_running")) newTrigger.setTriggerType(Trigger_Enum.process_started_stopped); + if(triggerEventString.equals("devicePosition")) + newTrigger.setTriggerType(Trigger_Enum.deviceOrientation); else newTrigger.setTriggerType(Trigger_Enum.valueOf(triggerEventString)); } @@ -939,7 +941,6 @@ public class XmlFileInterface } else if(newTrigger.getTriggerType() == Trigger_Enum.wifiConnection) { -// newTrigger.setWifiName(triggerParameter2); newTrigger.setTriggerParameter2(triggerParameter2); } else if(newTrigger.getTriggerType() == Trigger_Enum.process_started_stopped) diff --git a/app/src/main/java/com/jens/automation2/receivers/DevicePositionListener.java b/app/src/main/java/com/jens/automation2/receivers/DeviceOrientationListener.java similarity index 86% rename from app/src/main/java/com/jens/automation2/receivers/DevicePositionListener.java rename to app/src/main/java/com/jens/automation2/receivers/DeviceOrientationListener.java index 316b2a3..435491b 100644 --- a/app/src/main/java/com/jens/automation2/receivers/DevicePositionListener.java +++ b/app/src/main/java/com/jens/automation2/receivers/DeviceOrientationListener.java @@ -7,9 +7,8 @@ import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; -import android.widget.TextView; -import com.jens.automation2.ActivityManageTriggerDevicePosition; +import com.jens.automation2.ActivityManageTriggerDeviceOrientation; import com.jens.automation2.AutomationService; import com.jens.automation2.Miscellaneous; import com.jens.automation2.Rule; @@ -19,15 +18,15 @@ import com.jens.automation2.Trigger; import java.util.ArrayList; import java.util.Calendar; -public class DevicePositionListener implements SensorEventListener, AutomationListenerInterface +public class DeviceOrientationListener implements SensorEventListener, AutomationListenerInterface { // https://developer.android.com/guide/topics/sensors/sensors_position#java - ActivityManageTriggerDevicePosition activityManageTriggerDevicePositionInstance = null; + ActivityManageTriggerDeviceOrientation activityManageTriggerDeviceOrientationInstance = null; //the Sensor Manager private SensorManager sManager; - static DevicePositionListener instance = null; + static DeviceOrientationListener instance = null; boolean isRunning = false; Calendar now = null; @@ -51,10 +50,10 @@ public class DevicePositionListener implements SensorEventListener, AutomationLi boolean toggable = false; - public static DevicePositionListener getInstance() + public static DeviceOrientationListener getInstance() { if (instance == null) - instance = new DevicePositionListener(); + instance = new DeviceOrientationListener(); return instance; } @@ -74,9 +73,9 @@ public class DevicePositionListener implements SensorEventListener, AutomationLi return roll; } - public void startSensorFromConfigActivity(Context context, ActivityManageTriggerDevicePosition activityManageTriggerDevicePositionInstance) + public void startSensorFromConfigActivity(Context context, ActivityManageTriggerDeviceOrientation activityManageTriggerDeviceOrientationInstance) { - this.activityManageTriggerDevicePositionInstance = activityManageTriggerDevicePositionInstance; + this.activityManageTriggerDeviceOrientationInstance = activityManageTriggerDeviceOrientationInstance; if(!isRunning) { @@ -97,11 +96,11 @@ public class DevicePositionListener implements SensorEventListener, AutomationLi public void stopSensorFromConfigActivity() { - activityManageTriggerDevicePositionInstance = null; + activityManageTriggerDeviceOrientationInstance = null; if(isRunning) { - if(!Rule.isAnyRuleUsing(Trigger.Trigger_Enum.devicePosition)) + if(!Rule.isAnyRuleUsing(Trigger.Trigger_Enum.deviceOrientation)) { //unregister the sensor listener sManager.unregisterListener(this); @@ -146,16 +145,19 @@ public class DevicePositionListener implements SensorEventListener, AutomationLi } //else it will output the Roll, Pitch and Yawn values - if(activityManageTriggerDevicePositionInstance != null) - activityManageTriggerDevicePositionInstance.updateFields(azimuth, pitch, roll); + if(activityManageTriggerDeviceOrientationInstance != null) + activityManageTriggerDeviceOrientationInstance.updateFields(azimuth, pitch, roll); now = Calendar.getInstance(); - if(lastTimeSignalArrived == null || now.getTimeInMillis() >= lastTimeSignalArrived.getTimeInMillis() + Settings.acceptDevicePositionSignalEveryX_MilliSeconds) + if(lastTimeSignalArrived == null || now.getTimeInMillis() >= lastTimeSignalArrived.getTimeInMillis() + Settings.acceptDeviceOrientationSignalEveryX_MilliSeconds) { lastTimeSignalArrived = now; + + Miscellaneous.logEvent("i", "DeviceOrientation", "Got device orientation update: azimuth: " + String.valueOf(azimuth) + ", pitch: " + String.valueOf(pitch) + ", roll: " + String.valueOf(pitch), 4); + if (AutomationService.isMyServiceRunning(Miscellaneous.getAnyContext())) { - ArrayList ruleCandidates = Rule.findRuleCandidates(Trigger.Trigger_Enum.devicePosition); + ArrayList ruleCandidates = Rule.findRuleCandidates(Trigger.Trigger_Enum.deviceOrientation); for (int i = 0; i < ruleCandidates.size(); i++) { if (ruleCandidates.get(i).getsGreenLight(Miscellaneous.getAnyContext())) @@ -188,7 +190,7 @@ public class DevicePositionListener implements SensorEventListener, AutomationLi @Override public void stopListener(AutomationService automationService) { - this.activityManageTriggerDevicePositionInstance = null; + this.activityManageTriggerDeviceOrientationInstance = null; if(isRunning) { @@ -207,7 +209,7 @@ public class DevicePositionListener implements SensorEventListener, AutomationLi @Override public Trigger.Trigger_Enum[] getMonitoredTrigger() { - return new Trigger.Trigger_Enum[] { Trigger.Trigger_Enum.devicePosition }; + return new Trigger.Trigger_Enum[] { Trigger.Trigger_Enum.deviceOrientation}; } /* diff --git a/app/src/main/res/layout/activity_manage_trigger_device_position.xml b/app/src/main/res/layout/activity_manage_trigger_device_orientation.xml similarity index 97% rename from app/src/main/res/layout/activity_manage_trigger_device_position.xml rename to app/src/main/res/layout/activity_manage_trigger_device_orientation.xml index f9bb97f..b56d979 100644 --- a/app/src/main/res/layout/activity_manage_trigger_device_position.xml +++ b/app/src/main/res/layout/activity_manage_trigger_device_orientation.xml @@ -13,7 +13,7 @@ @@ -234,7 +234,7 @@ + android:text="@string/explanationDeviceOrientationDirection" />