forked from jens/Automation
Rework
This commit is contained in:
parent
c1139e1cb8
commit
d7e1cd44e8
@ -1119,36 +1119,55 @@ public class Actions
|
||||
}
|
||||
}
|
||||
|
||||
public static void turnOnScreen()
|
||||
/*public static void turnOnScreen()
|
||||
{
|
||||
// turn on screen
|
||||
Miscellaneous.logEvent("i", "Actions", "Turning screen on.", 3);
|
||||
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
|
||||
WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, AutomationService.NOTIFICATION_CHANNEL_ID + ":turnOffScreen");
|
||||
wakeLock.acquire();
|
||||
}
|
||||
}*/
|
||||
|
||||
@TargetApi(21) //Suppress lint error for PROXIMITY_SCREEN_OFF_WAKE_LOCK
|
||||
public static void turnOffScreen()
|
||||
{
|
||||
Miscellaneous.logEvent("i", "Actions", "Turning screen off.", 3);
|
||||
|
||||
DevicePolicyManager deviceManger = (DevicePolicyManager)Miscellaneous.getAnyContext().getSystemService(Context. DEVICE_POLICY_SERVICE);
|
||||
deviceManger.lockNow();
|
||||
|
||||
/*params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
|
||||
params.screenBrightness = 0;
|
||||
getWindow().setAttributes(params);
|
||||
getWindow().setAttributes(params);*/
|
||||
|
||||
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
|
||||
WakeLock wakeLock = pm.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK,AutomationService.NOTIFICATION_CHANNEL_ID + ":turnOffScreen");
|
||||
// WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK , AutomationService.NOTIFICATION_CHANNEL_ID + ":turnOffScreen");
|
||||
// WakeLock wakeLock = pm.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK,AutomationService.NOTIFICATION_CHANNEL_ID + ":turnOffScreen");
|
||||
WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK , AutomationService.NOTIFICATION_CHANNEL_ID + ":turnOffScreen");
|
||||
wakeLock.acquire();
|
||||
WakeLock wakeLock = pm.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "tag");
|
||||
|
||||
// WakeLock wakeLock = pm.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "tag");
|
||||
// WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK , "tag");
|
||||
wakeLock.acquire();*/
|
||||
// wakeLock.acquire();
|
||||
|
||||
try
|
||||
{
|
||||
Thread.sleep(100);
|
||||
}
|
||||
catch (InterruptedException e)
|
||||
{
|
||||
Miscellaneous.logEvent("w", context.getResources().getString(R.string.wakeupDevice), "Error keeping device awake: " + Log.getStackTraceString(e), 4);
|
||||
}
|
||||
|
||||
wakeLock.release();
|
||||
}
|
||||
|
||||
/*public static void lockScreen()
|
||||
{
|
||||
Miscellaneous.logEvent("i", "Actions", "Locking screen.", 3);
|
||||
|
||||
// Works, but requires Manifest.permission.BIND_DEVICE_ADMIN
|
||||
// https://stackoverflow.com/questions/23898406/java-lang-securityexception-no-active-admin-owned-by-uid-10047-for-policy-4-on
|
||||
DevicePolicyManager deviceManger = (DevicePolicyManager)Miscellaneous.getAnyContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
|
||||
deviceManger.lockNow();
|
||||
}*/
|
||||
|
||||
// using root
|
||||
/*private void turnOffScreen()
|
||||
{
|
||||
|
@ -50,6 +50,8 @@ public class ActivityManageRule extends Activity
|
||||
{
|
||||
final static String activityDetectionClassPath = "com.jens.automation2.receivers.ActivityDetectionReceiver";
|
||||
public final static String intentNameTriggerParameter1 = "triggerParameter1";
|
||||
public final static String intentNameActionParameter1 = "actionParameter1";
|
||||
public final static String intentNameActionParameter2 = "actionParameter2";
|
||||
|
||||
public Context context;
|
||||
private Button cmdTriggerAdd, cmdActionAdd, cmdSaveRule;
|
||||
@ -96,8 +98,8 @@ public class ActivityManageRule extends Activity
|
||||
final static int requestCodeTriggerBluetoothEdit = 6001;
|
||||
final static int requestCodeActionScreenBrightnessAdd = 401;
|
||||
final static int requestCodeActionScreenBrightnessEdit = 402;
|
||||
final static int requestCodeTriggerDevicePositionAdd = 301;
|
||||
final static int requestCodeTriggerDevicePositionEdit = 302;
|
||||
final static int requestCodeTriggerDeviceOrientationAdd = 301;
|
||||
final static int requestCodeTriggerDeviceOrientationEdit = 302;
|
||||
final static int requestCodeTriggerNotificationAdd = 8000;
|
||||
final static int requestCodeTriggerNfcNotificationEdit = 8001;
|
||||
final static int requestCodeActionPlaySoundAdd = 501;
|
||||
@ -268,7 +270,7 @@ public class ActivityManageRule extends Activity
|
||||
Intent devicePositionEditor = new Intent(ActivityManageRule.this, ActivityManageTriggerDeviceOrientation.class);
|
||||
devicePositionEditor.putExtra(ActivityManageRule.intentNameTriggerParameter1, selectedTrigger.getTriggerParameter());
|
||||
devicePositionEditor.putExtra(ActivityManageTriggerDeviceOrientation.vectorFieldName, selectedTrigger.getTriggerParameter2());
|
||||
startActivityForResult(devicePositionEditor, requestCodeTriggerDevicePositionEdit);
|
||||
startActivityForResult(devicePositionEditor, requestCodeTriggerDeviceOrientationEdit);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -341,8 +343,8 @@ public class ActivityManageRule extends Activity
|
||||
case playSound:
|
||||
Intent actionPlaySoundIntent = new Intent(context, ActivityManageActionPlaySound.class);
|
||||
actionPlaySoundIntent.putExtra("edit", true);
|
||||
actionPlaySoundIntent.putExtra("actionParameter1", a.getParameter1());
|
||||
actionPlaySoundIntent.putExtra("actionParameter2", a.getParameter2());
|
||||
actionPlaySoundIntent.putExtra(intentNameActionParameter1, a.getParameter1());
|
||||
actionPlaySoundIntent.putExtra(intentNameActionParameter2, a.getParameter2());
|
||||
startActivityForResult(actionPlaySoundIntent, requestCodeActionPlaySoundEdit);
|
||||
break;
|
||||
default:
|
||||
@ -559,7 +561,7 @@ public class ActivityManageRule extends Activity
|
||||
{
|
||||
newTrigger.setTriggerType(Trigger_Enum.deviceOrientation);
|
||||
Intent devicePositionTriggerEditor = new Intent(myContext, ActivityManageTriggerDeviceOrientation.class);
|
||||
startActivityForResult(devicePositionTriggerEditor, requestCodeTriggerDevicePositionAdd);
|
||||
startActivityForResult(devicePositionTriggerEditor, requestCodeTriggerDeviceOrientationAdd);
|
||||
return;
|
||||
// booleanChoices = new String[]{getResources().getString(R.string.started), getResources().getString(R.string.stopped)};
|
||||
}
|
||||
@ -1323,8 +1325,8 @@ public class ActivityManageRule extends Activity
|
||||
{
|
||||
if(resultCode == RESULT_OK)
|
||||
{
|
||||
newAction.setParameter1(data.getBooleanExtra("actionParameter1", false));
|
||||
newAction.setParameter2(data.getStringExtra("actionParameter2"));
|
||||
newAction.setParameter1(data.getBooleanExtra(intentNameActionParameter1, false));
|
||||
newAction.setParameter2(data.getStringExtra(intentNameActionParameter2));
|
||||
ruleToEdit.getActionSet().add(newAction);
|
||||
this.refreshActionList();
|
||||
}
|
||||
@ -1333,11 +1335,11 @@ public class ActivityManageRule extends Activity
|
||||
{
|
||||
if(resultCode == RESULT_OK)
|
||||
{
|
||||
if(data.hasExtra("actionParameter1"))
|
||||
ruleToEdit.getActionSet().get(editIndex).setParameter1(data.getBooleanExtra("actionParameter1", false));
|
||||
if(data.hasExtra(intentNameActionParameter1))
|
||||
ruleToEdit.getActionSet().get(editIndex).setParameter1(data.getBooleanExtra(intentNameActionParameter1, false));
|
||||
|
||||
if(data.hasExtra("actionParameter2"))
|
||||
ruleToEdit.getActionSet().get(editIndex).setParameter2(data.getStringExtra("actionParameter2"));
|
||||
if(data.hasExtra(intentNameActionParameter2))
|
||||
ruleToEdit.getActionSet().get(editIndex).setParameter2(data.getStringExtra(intentNameActionParameter2));
|
||||
|
||||
this.refreshActionList();
|
||||
}
|
||||
@ -1361,18 +1363,18 @@ public class ActivityManageRule extends Activity
|
||||
this.refreshActionList();
|
||||
}
|
||||
}
|
||||
else if(requestCode == requestCodeTriggerDevicePositionAdd)
|
||||
else if(requestCode == requestCodeTriggerDeviceOrientationAdd)
|
||||
{
|
||||
if(resultCode == RESULT_OK)
|
||||
{
|
||||
// newTrigger.setTriggerParameter(data.getBooleanExtra("wifiState", false));
|
||||
newTrigger.setTriggerParameter(data.getBooleanExtra(ActivityManageRule.intentNameTriggerParameter1, true));
|
||||
newTrigger.setTriggerParameter2(data.getStringExtra(ActivityManageTriggerDeviceOrientation.vectorFieldName));
|
||||
newTrigger.setParentRule(ruleToEdit);
|
||||
ruleToEdit.getTriggerSet().add(newTrigger);
|
||||
this.refreshTriggerList();
|
||||
}
|
||||
}
|
||||
else if(requestCode == requestCodeTriggerDevicePositionEdit)
|
||||
else if(requestCode == requestCodeTriggerDeviceOrientationEdit)
|
||||
{
|
||||
if(resultCode == RESULT_OK)
|
||||
{
|
||||
@ -1581,7 +1583,7 @@ public class ActivityManageRule extends Activity
|
||||
}
|
||||
else if(Action.getActionTypesAsArray()[which].toString().equals(Action_Enum.sendTextMessage.toString()))
|
||||
{
|
||||
if(ActivityPermissions.isPermissionDeclaratedInManifest(ActivityManageRule.this, "android.permission.SEND_SMS"))
|
||||
if(ActivityPermissions.isPermissionDeclaratedInManifest(ActivityManageRule.this, Manifest.permission.SEND_SMS))
|
||||
{
|
||||
//launch other activity to enter parameters;
|
||||
newAction.setAction(Action_Enum.sendTextMessage);
|
||||
|
@ -14,6 +14,7 @@ import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.database.Cursor;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
@ -544,6 +545,19 @@ public class Miscellaneous extends Service
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean isDarkModeEnabled(Context context)
|
||||
{
|
||||
switch(context.getResources().getConfiguration().uiMode)
|
||||
{
|
||||
case Configuration.UI_MODE_NIGHT_YES:
|
||||
return true;
|
||||
case Configuration.UI_MODE_NIGHT_NO:
|
||||
case Configuration.UI_MODE_NIGHT_UNDEFINED:
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
public static String replaceVariablesInText(String source, Context context) throws Exception
|
||||
{
|
||||
@ -1135,11 +1149,11 @@ public class Miscellaneous extends Service
|
||||
}
|
||||
catch (IllegalAccessException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
Miscellaneous.logEvent("w", "runMethodReflective", Log.getStackTraceString(e),5 );
|
||||
}
|
||||
catch (InvocationTargetException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
Miscellaneous.logEvent("w", "runMethodReflective", Log.getStackTraceString(e),5 );
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -175,10 +175,7 @@ public class ReceiverCoordinator
|
||||
Class testClass = Class.forName(ActivityManageRule.activityDetectionClassPath);
|
||||
//startActivityDetectionReceiver
|
||||
if(Rule.isAnyRuleUsing(Trigger.Trigger_Enum.activityDetection))
|
||||
{
|
||||
Miscellaneous.runMethodReflective(activityDetectionClassPath, "startActivityDetectionReceiver", null);
|
||||
// ActivityDetectionReceiver.startActivityDetectionReceiver();
|
||||
}
|
||||
}
|
||||
catch(ClassNotFoundException e)
|
||||
{
|
||||
@ -206,12 +203,12 @@ public class ReceiverCoordinator
|
||||
DateTimeListener.stopAlarmListener(AutomationService.getInstance());
|
||||
NoiseListener.stopNoiseListener();
|
||||
ProcessListener.stopProcessListener(AutomationService.getInstance());
|
||||
DeviceOrientationListener.getInstance().stopListener(AutomationService.getInstance());
|
||||
|
||||
try
|
||||
{
|
||||
Class testClass = Class.forName(ActivityManageRule.activityDetectionClassPath);
|
||||
Miscellaneous.runMethodReflective("ActivityDetectionReceiver", "stopActivityDetectionReceiver", null);
|
||||
// ActivityDetectionReceiver.stopActivityDetectionReceiver();
|
||||
}
|
||||
catch(ClassNotFoundException e)
|
||||
{
|
||||
|
@ -287,16 +287,18 @@ public class Trigger
|
||||
float currentRoll = DeviceOrientationListener.getInstance().getRoll();
|
||||
|
||||
if(
|
||||
desiredAzimuthTolerance < 180
|
||||
&&
|
||||
!(
|
||||
currentAzimuth <= desiredAzimuth + desiredAzimuthTolerance
|
||||
&&
|
||||
currentAzimuth >= desiredAzimuth - desiredAzimuthTolerance
|
||||
desiredAzimuthTolerance < 180
|
||||
&&
|
||||
(
|
||||
Math.abs(currentAzimuth) <= Math.abs(desiredAzimuth - desiredAzimuthTolerance)
|
||||
||
|
||||
Math.abs(currentAzimuth) <= desiredAzimuth + desiredAzimuthTolerance
|
||||
)
|
||||
)
|
||||
)
|
||||
{
|
||||
Miscellaneous.logEvent("i", "DeviceOrientation", "Trigger doesn\'t apply. Azimuth outside of tolerance area.", 5);
|
||||
Miscellaneous.logEvent("i", "DeviceOrientation", "Azimuth outside of tolerance area.", 5);
|
||||
if(getTriggerParameter())
|
||||
return false;
|
||||
else
|
||||
@ -304,16 +306,18 @@ public class Trigger
|
||||
}
|
||||
|
||||
if(
|
||||
desiredPitchTolerance < 180
|
||||
&&
|
||||
!(
|
||||
currentPitch <= desiredPitch + desiredPitchTolerance
|
||||
&&
|
||||
currentPitch >= desiredPitch - desiredPitchTolerance
|
||||
desiredPitchTolerance < 180
|
||||
&&
|
||||
(
|
||||
Math.abs(currentPitch) <= Math.abs(desiredPitch - desiredPitchTolerance)
|
||||
||
|
||||
Math.abs(currentPitch) <= desiredPitch + desiredPitchTolerance
|
||||
)
|
||||
)
|
||||
)
|
||||
{
|
||||
Miscellaneous.logEvent("i", "DeviceOrientation", "Trigger doesn\'t apply. Pitch outside of tolerance area.", 5);
|
||||
Miscellaneous.logEvent("i", "DeviceOrientation", "Pitch outside of tolerance area.", 5);
|
||||
if(getTriggerParameter())
|
||||
return false;
|
||||
else
|
||||
@ -321,16 +325,18 @@ public class Trigger
|
||||
}
|
||||
|
||||
if(
|
||||
desiredRollTolerance < 180
|
||||
&&
|
||||
!(
|
||||
currentRoll <= desiredRoll + desiredRollTolerance
|
||||
&&
|
||||
currentRoll >= desiredRoll - desiredRollTolerance
|
||||
desiredRollTolerance < 180
|
||||
&&
|
||||
(
|
||||
Math.abs(currentRoll) <= Math.abs(desiredRoll - desiredRollTolerance)
|
||||
||
|
||||
Math.abs(currentRoll) <= desiredRoll + desiredRollTolerance
|
||||
)
|
||||
)
|
||||
)
|
||||
{
|
||||
Miscellaneous.logEvent("i", "DeviceOrientation", "Trigger doesn\'t apply. Roll outside of tolerance area.", 5);
|
||||
Miscellaneous.logEvent("i", "DeviceOrientation", "Roll outside of tolerance area.", 5);
|
||||
if(getTriggerParameter())
|
||||
return false;
|
||||
else
|
||||
|
@ -31,6 +31,7 @@ public class DeviceOrientationListener implements SensorEventListener, Automatio
|
||||
|
||||
Calendar now = null;
|
||||
static Calendar lastTimeSignalArrived = null;
|
||||
static int sensorValueCounter = 0;
|
||||
|
||||
// Gravity rotational data
|
||||
private float gravity[];
|
||||
@ -148,23 +149,32 @@ public class DeviceOrientationListener implements SensorEventListener, Automatio
|
||||
if(activityManageTriggerDeviceOrientationInstance != null)
|
||||
activityManageTriggerDeviceOrientationInstance.updateFields(azimuth, pitch, roll);
|
||||
|
||||
now = Calendar.getInstance();
|
||||
if(lastTimeSignalArrived == null || now.getTimeInMillis() >= lastTimeSignalArrived.getTimeInMillis() + Settings.acceptDeviceOrientationSignalEveryX_MilliSeconds)
|
||||
/*
|
||||
For some reason the first 3 values after starting the listener
|
||||
are crap.
|
||||
*/
|
||||
if(sensorValueCounter > 3)
|
||||
{
|
||||
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()))
|
||||
now = Calendar.getInstance();
|
||||
if (lastTimeSignalArrived == null || now.getTimeInMillis() >= lastTimeSignalArrived.getTimeInMillis() + Settings.acceptDeviceOrientationSignalEveryX_MilliSeconds)
|
||||
{
|
||||
ArrayList<Rule> ruleCandidates = Rule.findRuleCandidates(Trigger.Trigger_Enum.deviceOrientation);
|
||||
for (int i = 0; i < ruleCandidates.size(); i++)
|
||||
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()))
|
||||
{
|
||||
if (ruleCandidates.get(i).getsGreenLight(Miscellaneous.getAnyContext()))
|
||||
ruleCandidates.get(i).activate(AutomationService.getInstance(), false);
|
||||
ArrayList<Rule> ruleCandidates = Rule.findRuleCandidates(Trigger.Trigger_Enum.deviceOrientation);
|
||||
for (int i = 0; i < ruleCandidates.size(); i++)
|
||||
{
|
||||
if (ruleCandidates.get(i).getsGreenLight(Miscellaneous.getAnyContext()))
|
||||
ruleCandidates.get(i).activate(AutomationService.getInstance(), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
sensorValueCounter++;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -445,7 +445,7 @@
|
||||
<string name="headphoneMicrophone">Microphone</string>
|
||||
<string name="headphoneAny">Either</string>
|
||||
<string name="headphoneSelectType">Select type of headphone</string>
|
||||
<string name="ruleDoesntApplyWrongHeadphoneType" translatable="false">Rule doesn\'t apply. Wrong headphone type.</string>
|
||||
<string name="ruleDoesntApplyWrongHeadphoneType" translatable="false">Rule %1$s doesn\'t apply. Wrong headphone type.</string>
|
||||
<string name="ignoringActivityDetectionUpdateTooSoon" translatable="false">Ignoring activity detection update. Came in sooner that %1$s seconds.</string>
|
||||
<string name="whatsThis">What\'s this?</string>
|
||||
<string name="atLeastRuleXisUsingY" translatable="false">At least rule \"%1$s\" is using a trigger of type \"%2$s\".</string>
|
||||
|
Loading…
Reference in New Issue
Block a user