diff --git a/app/src/main/java/com/jens/automation2/ActivityManageRule.java b/app/src/main/java/com/jens/automation2/ActivityManageRule.java
index 83a7503..bd086e6 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageRule.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageRule.java
@@ -712,6 +712,7 @@ public class ActivityManageRule extends Activity
{
newTrigger.setTriggerType(Trigger_Enum.screenState);
getTriggerScreenStateDialog().show();
+ Miscellaneous.messageBox(getResources().getString(R.string.info), getResources().getString(R.string.lockedCommentScreenMustBeOff), ActivityManageRule.this).show();
return;
}
else if(triggerType == Trigger_Enum.deviceStarts)
@@ -1080,7 +1081,8 @@ public class ActivityManageRule extends Activity
Miscellaneous.getAnyContext().getResources().getString(R.string.off),
Miscellaneous.getAnyContext().getResources().getString(R.string.on),
Miscellaneous.getAnyContext().getResources().getString(R.string.unlocked),
- Miscellaneous.getAnyContext().getResources().getString(R.string.locked)
+ Miscellaneous.getAnyContext().getResources().getString(R.string.lockedWithoutSecurity),
+ Miscellaneous.getAnyContext().getResources().getString(R.string.lockedWithSecurity)
};
alertDialog.setItems(choices, new DialogInterface.OnClickListener()
diff --git a/app/src/main/java/com/jens/automation2/Trigger.java b/app/src/main/java/com/jens/automation2/Trigger.java
index 2a63765..47162a8 100644
--- a/app/src/main/java/com/jens/automation2/Trigger.java
+++ b/app/src/main/java/com/jens/automation2/Trigger.java
@@ -445,13 +445,15 @@ public class Trigger
try
{
int desiredState = Integer.parseInt(getTriggerParameter2());
- int currentState = ScreenStateReceiver.getScreenState();
- return desiredState == currentState;
+ if(desiredState == ScreenStateReceiver.SCREEN_STATE_OFF || desiredState == ScreenStateReceiver.SCREEN_STATE_ON)
+ return desiredState == ScreenStateReceiver.getScreenPowerState();
+ else
+ return desiredState == ScreenStateReceiver.getScreenLockState();
}
catch (Exception e)
{
- Miscellaneous.logEvent("w", "Trigger", "Error checking profile trigger.", 4);
+ Miscellaneous.logEvent("w", "Trigger", "Error checking screen state trigger.", 4);
}
return false;
@@ -1608,7 +1610,10 @@ public class Trigger
state = Miscellaneous.getAnyContext().getString(R.string.unlocked);
break;
case "3":
- state = Miscellaneous.getAnyContext().getString(R.string.locked);
+ state = Miscellaneous.getAnyContext().getString(R.string.lockedWithoutSecurity);
+ break;
+ case "4":
+ state = Miscellaneous.getAnyContext().getString(R.string.lockedWithSecurity);
break;
default:
state = Miscellaneous.getAnyContext().getString(R.string.unknown);
diff --git a/app/src/main/java/com/jens/automation2/receivers/DateTimeListener.java b/app/src/main/java/com/jens/automation2/receivers/DateTimeListener.java
index 2f72a7b..3f054eb 100644
--- a/app/src/main/java/com/jens/automation2/receivers/DateTimeListener.java
+++ b/app/src/main/java/com/jens/automation2/receivers/DateTimeListener.java
@@ -403,4 +403,26 @@ public class DateTimeListener extends BroadcastReceiver implements AutomationLis
return null;
}
+
+ public class TimeObject
+ {
+ int hours, minutes, seconds;
+
+ public int getHours()
+ {
+ return hours;
+ }
+
+ public void setHours(int hours)
+ {
+ this.hours = hours;
+ }
+
+ public TimeObject(int hours, int minutes, int seconds)
+ {
+ this.hours = hours;
+ this.minutes = minutes;
+ this.seconds = seconds;
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/jens/automation2/receivers/ScreenStateReceiver.java b/app/src/main/java/com/jens/automation2/receivers/ScreenStateReceiver.java
index 670a3e3..7eac053 100644
--- a/app/src/main/java/com/jens/automation2/receivers/ScreenStateReceiver.java
+++ b/app/src/main/java/com/jens/automation2/receivers/ScreenStateReceiver.java
@@ -7,12 +7,8 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.os.BatteryManager;
import android.os.Build;
-import android.os.PowerManager;
import android.provider.Settings;
-import android.util.Log;
-import android.widget.Toast;
import androidx.annotation.RequiresApi;
@@ -23,13 +19,13 @@ import com.jens.automation2.Rule;
import com.jens.automation2.Trigger.Trigger_Enum;
import java.util.ArrayList;
-import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
public class ScreenStateReceiver extends BroadcastReceiver implements AutomationListenerInterface
{
- static int screenState = -1; // initialize with a better value than this
+ static int screenPowerState = -1; // initialize with a better value than this
+ static int screenLockState = -1; // initialize with a better value than this
public static AutomationService automationServiceRef = null;
private static boolean screenStateReceiverActive = false;
@@ -37,7 +33,14 @@ public class ScreenStateReceiver extends BroadcastReceiver implements Automation
private static Intent screenStatusIntent = null;
private static BroadcastReceiver screenStateReceiverInstance = null;
- public final static String broadcastScreenLocked = "automation.system.screen_locked";
+ public final static String broadcastScreenLockedWithoutSecurity = "automation.system.screen_locked_without_security";
+ public final static String broadcastScreenLockedWithSecurity = "automation.system.screen_locked_with_security";
+
+ public final static int SCREEN_STATE_OFF = 0;
+ public final static int SCREEN_STATE_ON = 1;
+ public final static int SCREEN_STATE_UNLOCKED = 2;
+ public final static int SCREEN_STATE_LOCKED_WITHOUT_SECURITY = 3;
+ public final static int SCREEN_STATE_LOCKED_WITH_SECURITY = 4;
public static BroadcastReceiver getScreenStateReceiverInstance()
{
@@ -62,7 +65,7 @@ public class ScreenStateReceiver extends BroadcastReceiver implements Automation
screenStateIntentFilter.addAction(Intent.ACTION_SCREEN_OFF);
screenStateIntentFilter.addAction(Intent.ACTION_SCREEN_ON);
screenStateIntentFilter.addAction(Intent.ACTION_USER_PRESENT); // also fired when device is unlocked
- screenStateIntentFilter.addAction(broadcastScreenLocked);
+ screenStateIntentFilter.addAction(broadcastScreenLockedWithSecurity);
// Intent.ACTION_USER_UNLOCKED
}
@@ -91,16 +94,14 @@ public class ScreenStateReceiver extends BroadcastReceiver implements Automation
return screenStateReceiverActive;
}
- public static int getScreenState()
+ public static int getScreenPowerState()
{
- return screenState;
+ return screenPowerState;
}
- private static int currentChargingState = 0; //0=unknown, 1=no, 2=yes
-
- public static int getCurrentChargingState()
+ public static int getScreenLockState()
{
- return currentChargingState;
+ return screenLockState;
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP_MR1)
@@ -118,7 +119,7 @@ public class ScreenStateReceiver extends BroadcastReceiver implements Automation
{
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
{
- ScreenStateReceiver.screenState = 0;
+ ScreenStateReceiver.screenPowerState = SCREEN_STATE_OFF;
// Method 2
// PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
@@ -134,10 +135,13 @@ public class ScreenStateReceiver extends BroadcastReceiver implements Automation
Miscellaneous.logEvent("i", "ScreenStateReceiver", "keyguardManager.isKeyguardLocked(): " + String.valueOf(keyguardManager.isKeyguardLocked()), 4);
Miscellaneous.logEvent("i", "ScreenStateReceiver", "keyguardManager.isDeviceLocked(): " + String.valueOf(keyguardManager.isDeviceLocked()), 4);
- boolean locked = keyguardManager.isKeyguardLocked() && keyguardManager.isDeviceLocked();
- if (locked)
+ if(keyguardManager.isKeyguardLocked() && !keyguardManager.isDeviceLocked())
{
- sendLockBroadcast(context);
+ sendLockBroadcast(Miscellaneous.getAnyContext(), broadcastScreenLockedWithoutSecurity);
+ }
+ else if(keyguardManager.isDeviceLocked())
+ {
+ sendLockBroadcast(Miscellaneous.getAnyContext(), broadcastScreenLockedWithSecurity);
}
else
{
@@ -148,15 +152,19 @@ public class ScreenStateReceiver extends BroadcastReceiver implements Automation
}
else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON))
{
- ScreenStateReceiver.screenState = 1;
+ ScreenStateReceiver.screenPowerState = SCREEN_STATE_ON;
}
else if (intent.getAction().equals(Intent.ACTION_USER_PRESENT))
{
- ScreenStateReceiver.screenState = 2;
+ ScreenStateReceiver.screenLockState = SCREEN_STATE_UNLOCKED;
}
- else if (intent.getAction().equals(broadcastScreenLocked))
+ else if (intent.getAction().equals(broadcastScreenLockedWithoutSecurity))
{
- ScreenStateReceiver.screenState = 3;
+ ScreenStateReceiver.screenLockState = SCREEN_STATE_LOCKED_WITHOUT_SECURITY;
+ }
+ else if (intent.getAction().equals(broadcastScreenLockedWithSecurity))
+ {
+ ScreenStateReceiver.screenLockState = SCREEN_STATE_LOCKED_WITH_SECURITY;
}
else
{
@@ -222,10 +230,18 @@ public class ScreenStateReceiver extends BroadcastReceiver implements Automation
{
KeyguardManager keyguardManager = (KeyguardManager) Miscellaneous.getAnyContext().getSystemService(Context.KEYGUARD_SERVICE);
- boolean locked = keyguardManager.isKeyguardLocked() && keyguardManager.isDeviceLocked();
- if (locked)
+ Miscellaneous.logEvent("i", "ScreenStateReceiver", "keyguardManager.isKeyguardLocked(): " + String.valueOf(keyguardManager.isKeyguardLocked()), 4);
+ Miscellaneous.logEvent("i", "ScreenStateReceiver", "keyguardManager.isDeviceLocked(): " + String.valueOf(keyguardManager.isDeviceLocked()), 4);
+
+ if(keyguardManager.isKeyguardLocked() && !keyguardManager.isDeviceLocked())
{
- sendLockBroadcast(Miscellaneous.getAnyContext());
+ sendLockBroadcast(Miscellaneous.getAnyContext(), broadcastScreenLockedWithoutSecurity);
+ timer.purge();
+ timer.cancel();
+ }
+ else if(keyguardManager.isDeviceLocked())
+ {
+ sendLockBroadcast(Miscellaneous.getAnyContext(), broadcastScreenLockedWithSecurity);
timer.purge();
timer.cancel();
}
@@ -258,10 +274,10 @@ public class ScreenStateReceiver extends BroadcastReceiver implements Automation
}
}
- static void sendLockBroadcast(Context context)
+ static void sendLockBroadcast(Context context, String lockType)
{
Intent lockedBroadcastIntent = new Intent();
- lockedBroadcastIntent.setAction(broadcastScreenLocked);
+ lockedBroadcastIntent.setAction(lockType);
context.sendBroadcast(lockedBroadcastIntent);
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/jens/automation2/receivers/TimeZoneListener.java b/app/src/main/java/com/jens/automation2/receivers/TimeZoneListener.java
index 5961a98..4d55a9d 100644
--- a/app/src/main/java/com/jens/automation2/receivers/TimeZoneListener.java
+++ b/app/src/main/java/com/jens/automation2/receivers/TimeZoneListener.java
@@ -14,14 +14,13 @@ import com.jens.automation2.Trigger.Trigger_Enum;
public class TimeZoneListener extends BroadcastReceiver implements AutomationListenerInterface
{
private static TimeZoneListener timeZoneListenerInstance = null;
- protected static boolean timeZoneListenerActive = false;
+ protected static boolean timezoneListenerActive = false;
protected static AutomationService automationServiceRef = null;
- protected static IntentFilter timeZoneListenerIntentFilter = null;
-
+ protected static IntentFilter timezoneListenerIntentFilter = null;
- public static boolean isTimeZoneListenerActive()
+ public static boolean isTimezoneListenerActive()
{
- return timeZoneListenerActive;
+ return timezoneListenerActive;
}
public static void startTimeZoneListener(AutomationService automationService)
@@ -33,19 +32,19 @@ public class TimeZoneListener extends BroadcastReceiver implements AutomationLis
try
{
- if(!timeZoneListenerActive && Rule.isAnyRuleUsing(Trigger_Enum.timeFrame))
+ if(!timezoneListenerActive && Rule.isAnyRuleUsing(Trigger_Enum.timeFrame))
{
Miscellaneous.logEvent("i", "TimeZoneListener", "Starting TimeZoneListener", 4);
- timeZoneListenerActive = true;
+ timezoneListenerActive = true;
- if(timeZoneListenerIntentFilter == null)
+ if(timezoneListenerIntentFilter == null)
{
- timeZoneListenerIntentFilter = new IntentFilter();
- timeZoneListenerIntentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
- timeZoneListenerIntentFilter.addAction(Intent.ACTION_TIME_CHANGED);
+ timezoneListenerIntentFilter = new IntentFilter();
+ timezoneListenerIntentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
+ timezoneListenerIntentFilter.addAction(Intent.ACTION_TIME_CHANGED);
}
- automationService.registerReceiver(timeZoneListenerInstance, timeZoneListenerIntentFilter);
+ automationService.registerReceiver(timeZoneListenerInstance, timezoneListenerIntentFilter);
}
}
catch(Exception ex)
@@ -57,11 +56,11 @@ public class TimeZoneListener extends BroadcastReceiver implements AutomationLis
{
try
{
- if(timeZoneListenerActive)
+ if(timezoneListenerActive)
{
Miscellaneous.logEvent("i", "TimeZoneListener", "Stopping TimeZoneListener", 4);
automationServiceRef.unregisterReceiver(timeZoneListenerInstance);
- timeZoneListenerActive = false;
+ timezoneListenerActive = false;
}
}
catch(Exception ex)
@@ -81,7 +80,7 @@ public class TimeZoneListener extends BroadcastReceiver implements AutomationLis
}
else if(action.equals(Intent.ACTION_TIME_CHANGED))
{
- Miscellaneous.logEvent("i", "TimeZoneListener", "Device time changed. Reloading alarms.", 4);
+ Miscellaneous.logEvent("i", "TimeZoneListener", "Device time changed. Reloading alarms.", 3);
DateTimeListener.reloadAlarms();
}
}
@@ -104,7 +103,7 @@ public class TimeZoneListener extends BroadcastReceiver implements AutomationLis
@Override
public boolean isListenerRunning()
{
- return TimeZoneListener.isTimeZoneListenerActive();
+ return TimeZoneListener.isTimezoneListenerActive();
}
@Override
public Trigger_Enum[] getMonitoredTrigger()
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 6241f66..a1fb053 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -557,7 +557,7 @@
Keine Dateien konnten importiert werden.
Nicht alle passenden Dateien konnten importiert werden.
Webseite mit Beispielen öffnen
- Sie können eine bestimmte Nummer eingeben, aber müssen nicht. Wenn Sie eine angeben wollen, können Sie auch eine aus dem Adressbuch auswählen. Außerdem können Sie reguläre Audrücke verwenden. Zum Testen selbiger mag ich die Seite:
+ Sie können eine bestimmte Nummer eingeben (des Anrufpartners), aber müssen nicht. Wenn Sie eine angeben wollen, können Sie auch eine aus dem Adressbuch auswählen. Außerdem können Sie reguläre Audrücke verwenden. Zum Testen selbiger mag ich die Seite:
Fehler beim Importieren der Einstellungen.
Regeln und Orte wurden erfolgreich importiert.
Fehler beim Importieren der Regeln.
@@ -713,5 +713,5 @@
Broadcast empfangen
Vorschläge anzeigen
Broadcast auswählen
- gesperrt
+ gesperrt
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index d4f913a..e94fd09 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -294,7 +294,7 @@
Valor del parámetro
Añadir pareja intento
Tipo del parámetro
- Puedes introducir un número, pero es opciónal. Si quieres usar uno puedes elegir uno de su directorio o introducir uno manualmente. Adiciónalmente puedes usar expresiónes regulares. Para probar esos me gusta la pagina:
+ Puedes introducir un número remoto, pero es opciónal. Si quieres usar uno puedes elegir uno de su directorio o introducir uno manualmente. Adiciónalmente puedes usar expresiónes regulares. Para probar esos me gusta la pagina:
Rotación del monitor activado.
Rotación del monitor desactivado.
No hay sitios.
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 16bab2c..5e689fe 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -355,7 +355,7 @@
Seleziona se\nentrante o uscente
Non ho l\'ultimo numero di telefono e quindi non posso inserirlo nella variabile.
Numero di telefono
- È possibile inserire un numero di telefono specifico, ma non è necessario. Se vuoi specificarne uno, puoi sceglierlo dalla tua rubrica o inserirlo manualmente. Inoltre puoi usare espressioni regolari. Per testare un\'espressione regolare mi piace questa pagina:
+ È possibile inserire un numero di telefono remoto specifico, ma non è necessario. Se vuoi specificarne uno, puoi sceglierlo dalla tua rubrica o inserirlo manualmente. Inoltre puoi usare espressioni regolari. Per testare un\'espressione regolare mi piace questa pagina:
Esegui suono
Inserisci una latitudine valida.
Inserisci una longitudine valida.
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index f68a3e3..0d3fbd3 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -543,7 +543,7 @@
Voer een geldige actie in
Voer een geldige pakketnaam in.
Staat
- U kunt een specifiek telefoonnummer opgeven, maar dat hoeft niet. Als u er een wilt opgeven, kunt u er een uit uw adresboek kiezen of het handmatig invoeren. Daarnaast kun je reguliere expressies gebruiken. Om een reguliere expressie te testen is deze pagina behulpzaam:
+ U kunt een specifiek telefoonnummer opgeven (van de bellende partner), maar dat hoeft niet. Als u er een wilt opgeven, kunt u er een uit uw adresboek kiezen of het handmatig invoeren. Daarnaast kun je reguliere expressies gebruiken. Om een reguliere expressie te testen is deze pagina behulpzaam:
Import configuration
Export configuration
Meer instellingen
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6c79425..aa1c144 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -645,7 +645,7 @@
Enter a valid action
Enter a valid package name.
State
- You can enter a specific phone number, but you don\'t have to. If you want to specify one you can either pick one from your address book or enter it manually. In addition you may use regular expressions. To test a regular expression I like this page:
+ You can enter a specific remote phone number, but you don\'t have to. If you want to specify one you can either pick one from your address book or enter it manually. In addition you may use regular expressions. To test a regular expression I like this page:
Import configuration
Export configuration
More settings
@@ -812,5 +812,7 @@
To avoid unnecessary wearing of your storage, logs are not saved by default. So if you have a problem please activate logging in settings first and set log level to 5. Then reproduce the problem. Only then logs can be attached.
Show suggestions
Select broadcast
- locked
+ locked (swipe only, no PIN)
+ locked (with PIN, etc.)
+ Any state of locked will only be detected if the screen is off.
\ No newline at end of file