From f7ff8a38e1eba016bd4d7d84e887f3d50dc1045e Mon Sep 17 00:00:00 2001 From: Jens Date: Sun, 21 Jan 2024 23:46:08 +0100 Subject: [PATCH] New version prep, fix attempt in notification listener --- app/build.gradle | 2 +- .../java/com/jens/automation2/Rule.java | 6 ++ .../com/jens/automation2/Miscellaneous.java | 37 ++++++++ .../java/com/jens/automation2/Trigger.java | 8 ++ .../receivers/CalendarReceiver.java | 10 +++ .../receivers/NotificationListener.java | 89 ++++++++++++++++++- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-es/strings.xml | 4 +- app/src/main/res/values-fr/strings.xml | 3 +- app/src/main/res/values-it/strings.xml | 3 +- app/src/main/res/values-nl/strings.xml | 2 +- app/src/main/res/values-pl/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-zh-rCN/strings.xml | 3 - app/src/main/res/values/strings.xml | 2 +- .../android/de-DE/full_description.txt | 26 +++++- .../android/en-US/full_description.txt | 23 ++++- .../android/es-ES/full_description.txt | 26 +++++- 18 files changed, 223 insertions(+), 27 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ccf6dbc..86cb7db 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,7 +12,7 @@ android { buildToolsVersion '29.0.2' useLibrary 'org.apache.http.legacy' versionCode 138 - versionName "1.7.21" + versionName "1.8" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/apkFlavor/java/com/jens/automation2/Rule.java b/app/src/apkFlavor/java/com/jens/automation2/Rule.java index 3572a0d..13a0008 100644 --- a/app/src/apkFlavor/java/com/jens/automation2/Rule.java +++ b/app/src/apkFlavor/java/com/jens/automation2/Rule.java @@ -16,6 +16,7 @@ import com.google.android.gms.location.DetectedActivity; import com.jens.automation2.receivers.ActivityDetectionReceiver; import com.jens.automation2.receivers.BroadcastListener; import com.jens.automation2.receivers.CalendarReceiver; +import com.jens.automation2.receivers.NotificationListener; import java.util.ArrayList; import java.util.Calendar; @@ -379,6 +380,11 @@ public class Rule implements Comparable Miscellaneous.logEvent("i", "getsGreenLight()", "Rule \"" + getName() + "\" applies and has flipped since its last execution.", 4); return true; } +// else if(hasTriggerOfType(Trigger.Trigger_Enum.notification) && NotificationListener.mayRuleStillBeActivatedForPendingNotifications(this)) +// { +// Miscellaneous.logEvent("i", "getsGreenLight()", "Rule \"" + getName() + "\" applies, has not flipped since its last execution, but may still be executed for other notifications.", 4); +// return true; +// } else if(hasTriggerOfType(Trigger.Trigger_Enum.calendarEvent) && CalendarReceiver.mayRuleStillBeActivatedForPendingCalendarEvents(this)) { Miscellaneous.logEvent("i", "getsGreenLight()", "Rule \"" + getName() + "\" applies, has not flipped since its last execution, but may still be executed for other calendar events.", 4); diff --git a/app/src/main/java/com/jens/automation2/Miscellaneous.java b/app/src/main/java/com/jens/automation2/Miscellaneous.java index aafe786..106be2c 100644 --- a/app/src/main/java/com/jens/automation2/Miscellaneous.java +++ b/app/src/main/java/com/jens/automation2/Miscellaneous.java @@ -37,6 +37,7 @@ import android.util.Log; import android.widget.Toast; import com.jens.automation2.location.LocationProvider; +import com.jens.automation2.receivers.CalendarReceiver; import com.jens.automation2.receivers.NotificationListener; import com.jens.automation2.receivers.PhoneStatusListener; @@ -826,6 +827,42 @@ public class Miscellaneous extends Service } } + if(source.contains("[last_calendar_title]")) + { + try + { + source = source.replace("[last_calendar_title]", CalendarReceiver.getLastTriggeringEvent().title); + } + catch (Exception e) + { + Miscellaneous.logEvent("w", "Variable replacement", "Error replacing variable last_calendar_title.", 3); + } + } + + if(source.contains("[last_calendar_description]")) + { + try + { + source = source.replace("[last_calendar_description]", CalendarReceiver.getLastTriggeringEvent().description); + } + catch (Exception e) + { + Miscellaneous.logEvent("w", "Variable replacement", "Error replacing variable last_calendar_description.", 3); + } + } + + if(source.contains("[last_calendar_location]")) + { + try + { + source = source.replace("[last_calendar_location]", CalendarReceiver.getLastTriggeringEvent().location); + } + catch (Exception e) + { + Miscellaneous.logEvent("w", "Variable replacement", "Error replacing variable last_calendar_location.", 3); + } + } + while(source.contains("[variable-")) { int pos1 = source.indexOf("[variable-"); diff --git a/app/src/main/java/com/jens/automation2/Trigger.java b/app/src/main/java/com/jens/automation2/Trigger.java index 6fcabea..9e9fb40 100644 --- a/app/src/main/java/com/jens/automation2/Trigger.java +++ b/app/src/main/java/com/jens/automation2/Trigger.java @@ -366,6 +366,14 @@ public class Trigger else Miscellaneous.logEvent("i", "NotificationCheck", "A required text for a notification trigger was not specified.", 5); + /* + We can only get here through the startup routine of the main service. + Because the notification did not come in at runtime, but was there + before we started, w need to take a record of it. + */ + if(NotificationListener.getLastNotification() == null) + NotificationListener.setLastNotification(sn); + foundMatch = true; break; } diff --git a/app/src/main/java/com/jens/automation2/receivers/CalendarReceiver.java b/app/src/main/java/com/jens/automation2/receivers/CalendarReceiver.java index 495d793..c7b808e 100644 --- a/app/src/main/java/com/jens/automation2/receivers/CalendarReceiver.java +++ b/app/src/main/java/com/jens/automation2/receivers/CalendarReceiver.java @@ -51,6 +51,16 @@ public class CalendarReceiver extends BroadcastReceiver implements AutomationLis static AlarmManager alarmManager = null; static boolean wakeupNeedsToBeScheduledOrRescheduled = false; + public static CalendarEvent getLastTriggeringEvent() + { + if(calendarEventsUsed.size() > 0) + { + return calendarEventsUsed.get(calendarEventsUsed.size() -1).event; + } + + return null; + } + public static class RuleEventPair { Rule rule; diff --git a/app/src/main/java/com/jens/automation2/receivers/NotificationListener.java b/app/src/main/java/com/jens/automation2/receivers/NotificationListener.java index 60073bf..ec94a6f 100644 --- a/app/src/main/java/com/jens/automation2/receivers/NotificationListener.java +++ b/app/src/main/java/com/jens/automation2/receivers/NotificationListener.java @@ -3,13 +3,13 @@ package com.jens.automation2.receivers; import android.annotation.SuppressLint; import android.app.Notification; import android.app.PendingIntent; -import android.content.IntentFilter; import android.os.Build; import android.os.Bundle; import android.service.notification.NotificationListenerService; import android.service.notification.StatusBarNotification; import android.util.Log; +import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import com.jens.automation2.AutomationService; @@ -19,6 +19,7 @@ import com.jens.automation2.Trigger; import java.util.ArrayList; import java.util.Calendar; +import java.util.List; // See here for reference: http://gmariotti.blogspot.com/2013/11/notificationlistenerservice-and-kitkat.html @@ -41,11 +42,42 @@ public class NotificationListener extends NotificationListenerService// implemen // a bitmap to be used instead of the small icon when showing the notification payload public static final String EXTRA_LARGE_ICON = "android.largeIcon"; + public static void setLastNotification(SimpleNotification notification) + { + lastNotification = notification; + } public static SimpleNotification getLastNotification() { return lastNotification; } + // To determine for which notifications which rules have been executed + static List notificationUsed = new ArrayList<>(); + + public static class RuleNotificationPair + { + Rule rule; + SimpleNotification notification; + + public RuleNotificationPair(Rule rule, SimpleNotification sn) + { + this.rule = rule; + this.notification = sn; + } + } + + public static void addUsedPair(RuleNotificationPair pair) + { + // Add pair only if it's not in the list already. + for(RuleNotificationPair usedPair : notificationUsed) + { + if(usedPair.rule.equals(pair.rule) && usedPair.notification.equals(pair.notification)) + return; + } + + notificationUsed.add(pair); + } + @Override public void onCreate() { @@ -211,6 +243,19 @@ public class NotificationListener extends NotificationListenerService// implemen ", text='" + text + '\'' + '}'; } + + @Override + public boolean equals(@Nullable Object obj) + { + return + this.publishTime.getTimeInMillis() == ((SimpleNotification)obj).publishTime.getTimeInMillis() + && + this.app.equals(((SimpleNotification)obj).app) + && + this.title.equals(((SimpleNotification)obj).title) + && + this.text.equals(((SimpleNotification)obj).text); + } } @Override @@ -264,4 +309,46 @@ public class NotificationListener extends NotificationListenerService// implemen if(!buttonFound) Miscellaneous.logEvent("w", "clickNotificationButton()", "Button with text \n" + buttonText + "\n could not found.", 2); } + + @RequiresApi(api = Build.VERSION_CODES.KITKAT) + public static boolean mayRuleStillBeActivatedForPendingNotifications(Rule rule) + { + for(RuleNotificationPair pair : notificationUsed) + Miscellaneous.logEvent("i", "mayRuleStillBeActivatedForPendingCalendarEvents()", "Existing pair of " + pair.rule.getName() + " and " + pair.notification, 5); + + for(StatusBarNotification sbn : NotificationListener.getInstance().getActiveNotifications()) + { + for(Trigger t : rule.getTriggerSet()) + { + if(t.getTriggerType().equals(Trigger.Trigger_Enum.notification) && NotificationListener.getInstance().checkNotification(true, sbn)) + { + if (!hasNotificationBeenUsedInRule(rule, convertNotificationToSimpleNotification(true, sbn))) + { + /* + If there are multiple parallel calendar events and a rule has multiple + triggers of type calendar event, we don't want the rule to fire only once. + */ + if(rule.getAmountOfTriggersForType(Trigger.Trigger_Enum.notification) == 1) + { + Miscellaneous.logEvent("i", "mayRuleStillBeActivatedForPendingNotifications()", "Rule " + rule.getName() + " has not been used in conjunction with notification " + sbn, 4); + return true; + } + } + } + } + } + + return false; + } + + public static boolean hasNotificationBeenUsedInRule(Rule rule, SimpleNotification notification) + { + for (RuleNotificationPair executedPair : notificationUsed) + { + if (executedPair.rule.equals(rule) && executedPair.notification.equals(notification)) + return true; + } + + return false; + } } \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 0b9c23a..2d69ad4 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -65,7 +65,7 @@ Ende Speichern URL, die ausgelöst werden soll: - Variablen:\nSie können die folgenden Variablen verwenden. Vor dem Auslösen werden sie mit dem entsprechenden Wert Ihres Geräts ersetzt. Die Klammern müssen in den Text mit aufgenommen werden.\n\n[uniqueid] - Die Unique ID Ihres Geräts\n[serialnr] - Die Seriennummer Ihres Geräts (< Android 9)\n[latitude] - Ihr gegenwärtiger Breitengrad\n[longitude] - Ihr gegenwärtiger Längengrad\n[phonenr] - Nummer des letzten ein- oder ausgehenden Anrufs\n[d] - Tag des Monats, 2-stellig mit führender Null\n[m] - Monat als Zahl, mit führenden Nullen\n[Y] - Vierstellige Jahreszahl\n[h] - Stunde im 12-Stunden-Format, mit führenden Nullen\n[H] - Stunde im 24-Stunden-Format, mit führenden Nullen\n[i] - Minuten, mit führenden Nullen\n[s] - Sekunden, mit führenden Nullen\n[ms] - milliseconds\n[notificationTitle] - Titel der letzten Benachrichtigung\n[notificationText] - Text der letzten Benachrichtigung\n[last_triggerurl_result] - Das Ergebnis der letzten Ausführung der triggerUrl-Aktion\n[last_run_executable_exit_code] - Der exit code der letzten starte-Programm Aktion\n[last_run_executable_output] - Die Ausgabe der letzten starte-Programm Aktion (nur für nicht-root)\n[variable-VARIABLENAME] - Der Wert Ihrer selbst definitierten Variable + Variablen:\nSie können die folgenden Variablen verwenden. Vor dem Auslösen werden sie mit dem entsprechenden Wert Ihres Geräts ersetzt. Die Klammern müssen in den Text mit aufgenommen werden.\n\n[uniqueid] - Die Unique ID Ihres Geräts\n[serialnr] - Die Seriennummer Ihres Geräts (< Android 9)\n[latitude] - Ihr gegenwärtiger Breitengrad\n[longitude] - Ihr gegenwärtiger Längengrad\n[phonenr] - Nummer des letzten ein- oder ausgehenden Anrufs\n[d] - Tag des Monats, 2-stellig mit führender Null\n[m] - Monat als Zahl, mit führenden Nullen\n[Y] - Vierstellige Jahreszahl\n[h] - Stunde im 12-Stunden-Format, mit führenden Nullen\n[H] - Stunde im 24-Stunden-Format, mit führenden Nullen\n[i] - Minuten, mit führenden Nullen\n[s] - Sekunden, mit führenden Nullen\n[ms] - milliseconds\n[notificationTitle] - Titel der letzten Benachrichtigung\n[notificationText] - Text der letzten Benachrichtigung\n[last_triggerurl_result] - Das Ergebnis der letzten Ausführung der triggerUrl-Aktion\n[last_run_executable_exit_code] - Der exit code der letzten starte-Programm Aktion\n[last_run_executable_output] - Die Ausgabe der letzten starte-Programm Aktion (nur für nicht-root)\n[last_calendar_title] - Titel des letzten Regel-auslösenden Kalendertermins\n[last_calendar_description] - Beschreibung des letzten Regel-auslösenden Kalendertermins\n[last_calendar_location] - Ort des letzten Regel-auslösenden Kalendertermins\n[variable-VARIABLENAME] - Der Wert Ihrer selbst definitierten Variable WLAN Aktiviere Deaktiviere diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index c9ffd3c..b818b6b 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -127,7 +127,7 @@ encender wifi desactivar wifi desactivar Bluetooth - Abrir URL en antecedentes + Abrir URL en el fondo Cambiar perfil sonido encender enrutador USB desactivar enrutador USB @@ -367,7 +367,7 @@ Red exactitud [m] Tiempo mínimo para cambio en milisegundos para actualizar posición Tiempo para actualizar [milisegundos] - Variables: Puede usar esas variables. Mientras ejecuta van a sustituir con los valores correspondientes en su dispositivo. Incluya las paréntecis en su texto.\n\n[uniqueid] - el número único de su dispositivo\n[serialnr] - el número de serie de su dispositivo (< Android 9)\n[latitude] - su latitud\n[longitude] - su longitud\n[phonenr] - Ùltimo número de llamada realizada tanto de salida como entrante\n[d] - Dia del mes, 2 digitos con cero al comienzo\n[m] - número del mes, 2 digitos con cero al comienzo\n[Y] - Número del año, 4 digitos\n[h] - Hora, formato 12 horas con cero al comienzo\n[H] - Hora, formato 24 horas con cero al comienzo\n[i] - Minutos con cero al comienzo\n[s] - Segundos con cero al comienzo\n[ms] - milisegundos\n[notificationTitle] - Título de la última notificación\n[notificationText] - Texto de la última notificación\n[last_triggerurl_result] - El resultado de la última ejecución de la acción triggerUrl\n[last_run_executable_exit_code] - El código de salida de la última acción ejecutable ejecutada\n[last_run_executable_output] - El resultado de la última acción ejecutable ejecutada (solo para no root)\n[variable-VARIABLENAME] - El valor de la variable definida personalizada + Variables: Puede usar esas variables. Mientras ejecuta van a sustituir con los valores correspondientes en su dispositivo. Incluya las paréntecis en su texto.\n\n[uniqueid] - el número único de su dispositivo\n[serialnr] - el número de serie de su dispositivo (< Android 9)\n[latitude] - su latitud\n[longitude] - su longitud\n[phonenr] - Ùltimo número de llamada realizada tanto de salida como entrante\n[d] - Dia del mes, 2 digitos con cero al comienzo\n[m] - número del mes, 2 digitos con cero al comienzo\n[Y] - Número del año, 4 digitos\n[h] - Hora, formato 12 horas con cero al comienzo\n[H] - Hora, formato 24 horas con cero al comienzo\n[i] - Minutos con cero al comienzo\n[s] - Segundos con cero al comienzo\n[ms] - milisegundos\n[notificationTitle] - Título de la última notificación\n[notificationText] - Texto de la última notificación\n[last_triggerurl_result] - El resultado de la última ejecución de la acción triggerUrl\n[last_run_executable_exit_code] - El código de salida de la última acción ejecutable ejecutada\n[last_run_executable_output] - El resultado de la última acción ejecutable ejecutada (solo para no root)Titel des letzten Regel-auslösenden Kalendertermins\n[last_calendar_title] - Título de la ultima cita en el calendar que ejecutó una regla\n[last_calendar_description] - Descriptión de la ultima cita en el calendar que ejecutó una regla\n[last_calendar_location] - Ubicación de la ultima cita en el calendar que ejecutó una regla\n[variable-VARIABLENAME] - El valor de la variable definida personalizada Rotación del monitor todavia esta activado. Rotación del monitor todavia esta desactivado. Se puede usar la lista de wifis conocidos para determinar los sitios en los cuales estuvo. Por eso el permiso de localización es necesario para cargar la lista de wifis. Si quiere elegir uno de la lista tiene que conceder el permiso. En caso contrario todavia puede introducir un nombre wifi manualmente. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 19bd1b2..5c4045b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -65,7 +65,7 @@ Arrêt Enregistrer URL à déclencher : - Variables :\nVous pouvez utiliser les variables suivantes. Lors du déclenchement, elles seront remplacées par les variables correspondantes sur votre appareil. Insérez les parenthèses dans votre texte.\n\n[uniqueid] - Identifiant unique de votre appareil\n[serialnr] - Numéro de série de votre appareil (< Android 9)\n[latitude] - Latitude de votre appraeil\n[longitude] - Longitude de votre appraeil\n[phonenr] - Numéro des derniers appels entrants ou sortants\n[d] - Jour du mois, @ chiffres commençant par 0\n[m] - Valeur numérique du mois, avec @ chiffres\n[Y] - Valeur numérique de l’année, $ chiffres\n[h] - Format horaire 12 heures, 2 chiffres\n[H] - Format horaire 24 heures, 2 chiffres\n[i] - Nombre de minutes, 2 chiffres\n[s] - Nombre de secondes, 2 chiffres\n[ms] - Nombre de millisecondes\n[notificationTitle] - titre de la dernière notification\n[notificationText] - texte de la dernière notification\n[last_triggerurl_result] - Résultat de l\'exécution de la dernière action triggerUrl\n[last_run_executable_exit_code] - Le code de sortie de la dernière action exécutable exécutée\n[last_run_executable_output] - La sortie de la dernière action exécutable exécutée (uniquement pour les non-roots)\n[variable-VARIABLENAME] - Valeur de votre variable définie personnalisée + Variables :\nVous pouvez utiliser les variables suivantes. Lors du déclenchement, elles seront remplacées par les variables correspondantes sur votre appareil. Insérez les parenthèses dans votre texte.\n\n[uniqueid] - Identifiant unique de votre appareil\n[serialnr] - Numéro de série de votre appareil (< Android 9)\n[latitude] - Latitude de votre appraeil\n[longitude] - Longitude de votre appraeil\n[phonenr] - Numéro des derniers appels entrants ou sortants\n[d] - Jour du mois, @ chiffres commençant par 0\n[m] - Valeur numérique du mois, avec @ chiffres\n[Y] - Valeur numérique de l’année, $ chiffres\n[h] - Format horaire 12 heures, 2 chiffres\n[H] - Format horaire 24 heures, 2 chiffres\n[i] - Nombre de minutes, 2 chiffres\n[s] - Nombre de secondes, 2 chiffres\n[ms] - Nombre de millisecondes\n[notificationTitle] - titre de la dernière notification\n[notificationText] - texte de la dernière notification\n[last_triggerurl_result] - Résultat de l\'exécution de la dernière action triggerUrl\n[last_run_executable_exit_code] - Le code de sortie de la dernière action exécutable exécutée\n[last_run_executable_output] - La sortie de la dernière action exécutable exécutée (uniquement pour les non-roots)\n[last_calendar_title] - Titre du dernier événement de calendrier déclenchant une règle\n[last_calendar_description] - Description du dernier événement de calendrier déclenchant une règle\n[last_calendar_location] - Emplacement du dernier événement de calendrier déclenchant la règle\n[variable-VARIABLENAME] - Valeur de votre variable définie personnalisée wifi Allumer Éteindre @@ -825,7 +825,6 @@ tentative absent du bureau Travailler ailleurs - Travailler ailleurs Si vous ne sélectionnez aucun élément, n\'importe lequel d\'entre eux sera acceptable. Calendriers Il se peut que seuls les 3 premiers types fonctionnent réellement car les autres types ne font pas partie de l\'interface de calendrier standard d\'Android. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 6f8a317..756f980 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -542,7 +542,7 @@ Martedì Errore indeterminato. finchè - Variabili:\n È possibile utilizzare le seguenti variabili. Quando attivate, saranno sostituite con il valore corrispondente sul tuo dispositivo. Includi le parentesi nel tuo testo.\n\n[uniqueid] - L\'ID unico del tuo dispositivo\n[serialnr] - Il numero di serie del tuo dispositivio (< Android 9)\n[latitude] - La latitudine del tuo dispositivo\n[longitude] - La longitudine del tuo dispositivo\n[phonenr] - Numero dell\'ultima chiamata (entrante o uscente)\n[d] - Il giorno del mese, sempre 2 cifre con zero iniziale \n[m] - Mese in formato numerico, sempre 2 cifre con zero iniziale \n[Y] - L\’anno, sempre con 4 cifre\n[h] - Ore in formato 12 ore, sempre 2 cifre con due punti\n[H] - Ore in formato 24 ore, sempre 2 cifre con due punti\n[i] - Minuti, sempre 2 cifre\n[s] - Secondi, sempre 2 cifre\n[ms] - millisecondi, sempre 3 cifre\n[notificationTitle] - titolo dell\'ultima notifica\n[notificationText] - testo dell\'ultima notifica\n[last_triggerurl_result] - Risultato dell\'esecuzione dell\'ultima azione triggerUrl\n[last_run_executable_exit_code] - Codice di uscita dell\'ultima azione eseguibile di esecuzione\n[last_run_executable_output] - L\'output dell\'ultima azione eseguibile eseguita (solo per i non root)\n[variable-VARIABLENAME] - Il valore della variabile definita in modo personalizzato + Variabili:\n È possibile utilizzare le seguenti variabili. Quando attivate, saranno sostituite con il valore corrispondente sul tuo dispositivo. Includi le parentesi nel tuo testo.\n\n[uniqueid] - L\'ID unico del tuo dispositivo\n[serialnr] - Il numero di serie del tuo dispositivio (< Android 9)\n[latitude] - La latitudine del tuo dispositivo\n[longitude] - La longitudine del tuo dispositivo\n[phonenr] - Numero dell\'ultima chiamata (entrante o uscente)\n[d] - Il giorno del mese, sempre 2 cifre con zero iniziale \n[m] - Mese in formato numerico, sempre 2 cifre con zero iniziale \n[Y] - L\’anno, sempre con 4 cifre\n[h] - Ore in formato 12 ore, sempre 2 cifre con due punti\n[H] - Ore in formato 24 ore, sempre 2 cifre con due punti\n[i] - Minuti, sempre 2 cifre\n[s] - Secondi, sempre 2 cifre\n[ms] - millisecondi, sempre 3 cifre\n[notificationTitle] - titolo dell\'ultima notifica\n[notificationText] - testo dell\'ultima notifica\n[last_triggerurl_result] - Risultato dell\'esecuzione dell\'ultima azione triggerUrl\n[last_run_executable_exit_code] - Codice di uscita dell\'ultima azione eseguibile di esecuzione\n[last_run_executable_output] - L\'output dell\'ultima azione eseguibile eseguita (solo per i non root)\n[last_calendar_title] - Titolo dell\'ultimo evento di calendario che ha attivato la regola\n[last_calendar_description] - Descrizione dell\'ultimo evento del calendario che ha attivato la regola\n[last_calendar_location] - Posizione dell\'ultimo evento del calendario che ha attivato la regola\n[variable-VARIABLENAME] - Il valore della variabile definita in modo personalizzato URL da caricare: L\'url deve avere almeno 10 caratteri. Questo molto probabilmente non funzionerà dato che sei su una versione superiore ad Android 2.3. Tuttavia è possibile utilizzare la connessione wifi tethering per attivare la regola. @@ -828,7 +828,6 @@ Lavorare altrove Se non selezioni nessun elemento, tutti saranno ok. Calendari - Calendari È possibile che solo i primi 3 tipi funzionino effettivamente perché gli altri tipi non fanno parte dell\'interfaccia del calendario standard di Android. qualsiasi calendario Disponibilità diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index ba545b4..465e9ad 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -64,7 +64,7 @@ Einde Opslaan URL om te activeren: - Variabelen:U kunt de volgende variabelen gebruiken. Bij het triggeren zullen ze worden vervangen door de corresponderende waarde op je apparaat. Zet de haakjes in uw tekst. \n[uniqueid] - Het unieke id van uw apparaat[serialnr] - Het serienummer van uw apparaat (< Android 9)[latitude] - De breedtegraad van uw apparaat[longitude] - De lengtegraad van uw apparaat[phonenr] - Nummer van het laatste inkomende of uitgaande gesprek[d] - Dag van de maand, 2 cijfers met voorloopnullen[m] - Numerieke weergave van een maand, met voorloopnullen[Y] - een volledige numerieke weergave van een jaar, 4 cijfers[h] - 12-uurs indeling van een uur, met voorloopnullen[H] - 24-uurs indeling van een uur, met voorloopnullen[i] - minuten, met voorloopnullen[s] - seconden, met voorloopnullen[ms] - milliseconden[notificationTitle] - titel van de laatste melding[notificationText] - tekst van de laatste melding\n[last_triggerurl_result] - Het resultaat van de laatste uitvoering van de triggerUrl-actie\n[last_run_executable_exit_code] - De afsluitcode van de uitvoerbare actie van de laatste uitvoering\n[last_run_executable_output] - De uitvoer van de uitvoerbare actie van de laatste uitvoering (alleen voor niet-root)\n[variable-VARIABLENAME] - De waarde van uw aangepaste gedefinieerde variabele + Variabelen:U kunt de volgende variabelen gebruiken. Bij het triggeren zullen ze worden vervangen door de corresponderende waarde op je apparaat. Zet de haakjes in uw tekst. \n[uniqueid] - Het unieke id van uw apparaat[serialnr] - Het serienummer van uw apparaat (< Android 9)[latitude] - De breedtegraad van uw apparaat[longitude] - De lengtegraad van uw apparaat[phonenr] - Nummer van het laatste inkomende of uitgaande gesprek[d] - Dag van de maand, 2 cijfers met voorloopnullen[m] - Numerieke weergave van een maand, met voorloopnullen[Y] - een volledige numerieke weergave van een jaar, 4 cijfers[h] - 12-uurs indeling van een uur, met voorloopnullen[H] - 24-uurs indeling van een uur, met voorloopnullen[i] - minuten, met voorloopnullen[s] - seconden, met voorloopnullen[ms] - milliseconden[notificationTitle] - titel van de laatste melding[notificationText] - tekst van de laatste melding\n[last_triggerurl_result] - Het resultaat van de laatste uitvoering van de triggerUrl-actie\n[last_run_executable_exit_code] - De afsluitcode van de uitvoerbare actie van de laatste uitvoering\n[last_run_executable_output] - De uitvoer van de uitvoerbare actie van de laatste uitvoering (alleen voor niet-root)\n[last_calendar_title] - Titel van de laatste agenda-afspraak die regels activeert\n[last_calendar_description] - Beschrijving van de laatste agenda-gebeurtenis die regels activeert\n[last_calendar_location] - Locatie van de laatste agenda-gebeurtenis die de regel activeert\n[variable-VARIABLENAME] - De waarde van uw aangepaste gedefinieerde variabele wifi Activeren Deactiveren diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 36d4bbb..02765e0 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -70,7 +70,7 @@ Koniec Zapisz Adres URL do uruchomienia: - Zmienne:\nMożesz użyć następujących zmiennych. Po uruchomieniu zostaną one zastąpione odpowiednią wartością na Twoim urządzeniu. Umieść nawiasy w tekście.\n\n[uniqueid] – unikalny identyfikator Twojego urządzenia\n[serialnr] – numer seryjny Twojego urządzenia (< Android 9)\n[latitude] – Twoje urządzenie\ szerokość geograficzna użytkownika\n[longitude] – długość geograficzna Twojego urządzenia\n[phonenr] – numer ostatniego połączenia przychodzącego lub wychodzącego\n[d] – dzień miesiąca, 2 cyfry z zerami na początku\n[m] – Numeryczna reprezentacja miesiąca z zerami na początku\n[Y] — pełna cyfrowa reprezentacja roku, 4 cyfry\n[h] — godzina w formacie 12-godzinnym z zerami na początku\n[H] — format 24-godzinny format godziny z wiodącymi zerami\n[i] - minuty z wiodącymi zerami\n[s] - sekundy z wiodącymi zerami\n[ms] - milisekundy\n[notificationTitle] - tytuł ostatniego powiadomienia\n[notificationText] - tekst ostatniego powiadomienia\n[last_triggerurl_result] - Wynik ostatniego wykonania akcji triggerUrl\n[last_run_executable_exit_code] - Kod zakończenia ostatniej uruchomionej akcji wykonywalnej\n[last_run_executable_output] - Dane wyjściowe ostatniej akcji wykonywalnej uruchomienia (tylko dla użytkowników innych niż root)\n[variable-VARIABLENAME] - Wartość niestandardowej zmiennej zdefiniowanej przez Ciebie + Zmienne:\nMożesz użyć następujących zmiennych. Po uruchomieniu zostaną one zastąpione odpowiednią wartością na Twoim urządzeniu. Umieść nawiasy w tekście.\n\n[uniqueid] – unikalny identyfikator Twojego urządzenia\n[serialnr] – numer seryjny Twojego urządzenia (< Android 9)\n[latitude] – Twoje urządzenie\ szerokość geograficzna użytkownika\n[longitude] – długość geograficzna Twojego urządzenia\n[phonenr] – numer ostatniego połączenia przychodzącego lub wychodzącego\n[d] – dzień miesiąca, 2 cyfry z zerami na początku\n[m] – Numeryczna reprezentacja miesiąca z zerami na początku\n[Y] — pełna cyfrowa reprezentacja roku, 4 cyfry\n[h] — godzina w formacie 12-godzinnym z zerami na początku\n[H] — format 24-godzinny format godziny z wiodącymi zerami\n[i] - minuty z wiodącymi zerami\n[s] - sekundy z wiodącymi zerami\n[ms] - milisekundy\n[notificationTitle] - tytuł ostatniego powiadomienia\n[notificationText] - tekst ostatniego powiadomienia\n[last_triggerurl_result] - Wynik ostatniego wykonania akcji triggerUrl\n[last_run_executable_exit_code] - Kod zakończenia ostatniej uruchomionej akcji wykonywalnej\n[last_run_executable_output] - Dane wyjściowe ostatniej akcji wykonywalnej uruchomienia (tylko dla użytkowników innych niż root)\n[last_calendar_title] - Tytuł ostatniego wydarzenia w kalendarzu wyzwalającego regułę\n[last_calendar_description] - opis ostatniego wydarzenia w kalendarzu wyzwalającego regułę\n[last_calendar_location] - Lokalizacja ostatniego zdarzenia w kalendarzu wyzwalającego regułę\n[variable-VARIABLENAME] - Wartość niestandardowej zmiennej zdefiniowanej przez Ciebie wifi Aktywowanie Dezaktywowanie diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 9121b78..37b2f19 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -65,7 +65,7 @@ Конец Сохранить URL для вызова: - Переменные:\nВы можете использовать следующие переменные. При срабатывании они будут заменены соответствующим значением на вашем устройстве. Скобки- часть переменной.\n\n[uniqueid] - уникальный идентификатор\n[serialnr] - серийный номер(< Android 9)\n[latitude] - широта\n[longitude] - долгота\n[phonenr] - Номер последнего входящего или исходящего вызова\n[d] - День месяца, 2 цифры с начальными нулями\n[m] – Месяц, 2 цифры с начальными нулями\n[Y] - Год, 4 цифры\n[h] - 12-часовой формат часа с начальными нулями\n[H] - 24-часовой формат часа с начальными нулями\n[i] - Минуты с начальными нулями\n[s] - Секунды с начальными нулями\n[ms] - миллисекунды\n[notificationTitle] - заголовок последнего уведомления\n[notificationText] - текст последнего уведомления\n[last_triggerurl_result] - Результат последнего выполнения действия triggerUrl\n[last_run_executable_exit_code] - Код выхода последнего выполняемого действия\n[last_run_executable_output] - Выходные данные последнего выполняемого действия (только для некорневых пользователей)\n[variable-VARIABLENAME] - Значение переменной, определенной пользователем + Переменные:\nВы можете использовать следующие переменные. При срабатывании они будут заменены соответствующим значением на вашем устройстве. Скобки- часть переменной.\n\n[uniqueid] - уникальный идентификатор\n[serialnr] - серийный номер(< Android 9)\n[latitude] - широта\n[longitude] - долгота\n[phonenr] - Номер последнего входящего или исходящего вызова\n[d] - День месяца, 2 цифры с начальными нулями\n[m] – Месяц, 2 цифры с начальными нулями\n[Y] - Год, 4 цифры\n[h] - 12-часовой формат часа с начальными нулями\n[H] - 24-часовой формат часа с начальными нулями\n[i] - Минуты с начальными нулями\n[s] - Секунды с начальными нулями\n[ms] - миллисекунды\n[notificationTitle] - заголовок последнего уведомления\n[notificationText] - текст последнего уведомления\n[last_triggerurl_result] - Результат последнего выполнения действия triggerUrl\n[last_run_executable_exit_code] - Код выхода последнего выполняемого действия\n[last_run_executable_output] - Выходные данные последнего выполняемого действия (только для некорневых пользователей)\n[last_calendar_title] - Заголовок последнего календарного события, запускающего правило\n[last_calendar_description] - Описание последнего события календаря, активировавшего правило\n[last_calendar_location] - Местоположение последнего календарного события, запускающего правило\n[variable-VARIABLENAME] - Значение переменной, определенной пользователем Wi-Fi Активация Деактивация diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 5f7cb43..75e5b14 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -823,8 +823,6 @@ 自由 尝试 不在办公室 - 不在办公室 - 不在办公室 在其他地方工作 如果您不选择任何项目,则任何一个都可以。 日历 @@ -832,7 +830,6 @@ 任何日历 可用性 在此触发器中,以前已配置了 ID 为 %1$s 的日历,但此后已被删除。在下次保存时,这些将从此触发器中删除。在此之前,此触发器/条件将永远不会得到满足。 - account 帐户 全天活动 活动是全天活动 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ab12daa..db519c3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -70,7 +70,7 @@ End Save URL to trigger: - Variables:\nYou can use the following variables. Upon triggering they will be replaced with the corresponding value on your device. Include the brackets in your text.\n\n[uniqueid] - Your device\'s unique id\n[serialnr] - Your device\'s serial number (< Android 9)\n[latitude] - Your device\'s latitude\n[longitude] - Your device\'s longitude\n[phonenr] - Number of last incoming or outgoing call\n[d] - Day of the month, 2 digits with leading zeros\n[m] - Numeric representation of a month, with leading zeros\n[Y] - A full numeric representation of a year, 4 digits\n[h] - 12-hour format of an hour with leading zeros\n[H] - 24-hour format of an hour with leading zeros\n[i] - Minutes with leading zeros\n[s] - Seconds, with leading zeros\n[ms] - milliseconds\n[notificationTitle] - title of last notification\n[notificationText] - text of last notification\n[last_triggerurl_result] - The result of the last triggerUrl action execution\n[last_run_executable_exit_code] - The exit code of the last run executable action\n[last_run_executable_output] - The output of the last run executable action (only for non-root)\n[variable-VARIABLENAME] - The value of your custom defined variable + Variables:\nYou can use the following variables. Upon triggering they will be replaced with the corresponding value on your device. Include the brackets in your text.\n\n[uniqueid] - Your device\'s unique id\n[serialnr] - Your device\'s serial number (< Android 9)\n[latitude] - Your device\'s latitude\n[longitude] - Your device\'s longitude\n[phonenr] - Number of last incoming or outgoing call\n[d] - Day of the month, 2 digits with leading zeros\n[m] - Numeric representation of a month, with leading zeros\n[Y] - A full numeric representation of a year, 4 digits\n[h] - 12-hour format of an hour with leading zeros\n[H] - 24-hour format of an hour with leading zeros\n[i] - Minutes with leading zeros\n[s] - Seconds, with leading zeros\n[ms] - milliseconds\n[notificationTitle] - title of last notification\n[notificationText] - text of last notification\n[last_triggerurl_result] - The result of the last triggerUrl action execution\n[last_run_executable_exit_code] - The exit code of the last run executable action\n[last_run_executable_output] - The output of the last run executable action (only for non-root)\n[last_calendar_title] - Title of the last rule-triggering calendar event\n[last_calendar_description] - Description of the last rule-triggering calendar event\n[last_calendar_location] - Location of the last rule-triggering calendar event\n[variable-VARIABLENAME] - The value of your custom defined variable wifi Activating Deactivating diff --git a/fastlane/metadata/android/de-DE/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt index 1e15e1e..81d9799 100644 --- a/fastlane/metadata/android/de-DE/full_description.txt +++ b/fastlane/metadata/android/de-DE/full_description.txt @@ -15,14 +15,22 @@ Mögliche Auslöser: * Flugzeugmodus * Roaming aktiv oder nicht * NFC tags +************** Aktivitätserkennung (nicht in F-Droid Version) * Bluetooth Gerät verbunden * Headset verbunden -* Telefongespräch im Gange * Benachrichtigungen anderer Anwendungen * Geräteausrichtung (Gyroskop) * Profile aktiv oder nicht +************ Bildschirmzustand (aus-/eingeschaltet) +************ Musikwiedergabestatus +************ Gerät startet +************ Dienst startet * Broadcasts anderer Anwendungen +************ Router-Zustand +************ Zustände (Bluetooth/WLAN aus oder an) * Variablen, die gesetzt wurden +*********** Kalendertermine +* Telefongespräch im Gange Mögliche Aktionen: * WLAN ein-/ausschalten @@ -37,15 +45,25 @@ Mögliche Aktionen: * Warten (zwischen anderen Aktionen) * Bildschirm ein-/ausschalten * Flugzeugmodus ein-/ausschalten -* Datenverbindung ein-/ausschalten +* Mobile Daten ein-/ausschalten * Text sprechen (TTS) * Musikplayer öffnen +********** Medienwiedergabe steuern * Bildschirmhelligkeit ändern -* SMS verschicken -* Sounddatei abspielen. +* Sounddatei abspielen +******** Vibrieren * Benachrichtigungen erstellen +******* Benachrichtigungen schließen +******* Broadcast verschicken +******** Script/Befehl ausführen +******* Bildschirm aktiv halten * Variablen setzen * Telefonanrufe starten +**********Telefonanrufe beenden +********** Text in Zwischenablage kopieren +********* Screenshot erstellen +********* GPS Einstellungen setzen +* SMS verschicken Es ist ziemlich schwierig diese Anwendung über die vielen verschiedenen Geräte und Android Versionen am Laufen zu halten. Ich kann vieles im Emulator testen, aber eben nicht alles. Wenn also eine bestimmte Funktion nicht so tut wie sie sollte - lassen Sie es mich wissen. Über die Jahre habe ich noch alle Fehler behoben, die mir vernünftig gemeldet wurden. Aber dafür bin ich auf Ihre Mithilfe angewiesen. diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index 3607093..3d0ff17 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -8,21 +8,29 @@ Supported triggers: * Charging state * Battery level * USB connection to computer established -* Your current speed +* Current speed * Background noise (only until Android 7) * Wifi connection * Other applications running * Airplane mode * Roaming status * NFC tags +* Activity detection (not in F-Droid version) * Bluetooth connection * Headset connected -* Phone call running * Notifications of other apps * Device orientation (gyroscope) * Profile active or not +* Screen state (on or off) +* Status of media playback +* Device is starting +* Service is starting * Broadcasts of other apps +* Router state +* System states (Bluetooth/wifi) * Variables that have been set +* Calendar appointments +* Phone call running Supported actions: * Change wifi state @@ -40,12 +48,21 @@ Supported actions: * Toggle mobile data connection * Speak text * Open music player +* Control media playback * Change screen brightness -* Send text message * Play sound file * Create notifications +* Close notifications +* Send broadcasts +* Run script/command +* Maintain screen active * Set variables * Initiate phone calls +* Terminate phone calls +* Copy text to clipboard +* Make screenshot +* Change location setting +* Send text message It's quite hard to keep this app working across the many different hardwares as well as the many changes Android undergoes over the versions. I can test it in the emulator, but that cannot show all bugs. So if a certain feature is not working on your device - let me know. Over the years I have fixed almost all bugs that have been reasonably reported to me. But for that I'm dependend on your input. diff --git a/fastlane/metadata/android/es-ES/full_description.txt b/fastlane/metadata/android/es-ES/full_description.txt index 1d93ca5..85758cc 100644 --- a/fastlane/metadata/android/es-ES/full_description.txt +++ b/fastlane/metadata/android/es-ES/full_description.txt @@ -15,14 +15,22 @@ Disparadores: * Modo de vuelo * Estado de roaming * NFC tags +* Detection de actividad (no en la versión F-Droid) * Bluetooth conexión * Headset conectado -* Llamado de teléfono activo * Notificaciónes de otras apps * Orientación del dispositivo (giroscopio) * Perfil activado o no +* Estado de la pantalla +* Estado de la reprodución de audio +* Dispositivo está enciendo +* Servicio está enciendo * Broadcasts de otras apps +* Estado del router +* Estados (Bluetooth/Wifi) * Variables que se han establecido +* Citas en el calendar +* Llamado de teléfono activo Aciónes: * Pasar de wifi @@ -40,12 +48,22 @@ Aciónes: * Pasar datos móviles * Leer texto * Abrir reproductor de música -* Cambiar luminosidad del monitor -* Enviar mensaje -* Tocar archivo sonido +* Controllar reproducion de música +* Cambiar luminosidad de la pantalla +* Reproducir audio +* Vibrar * Crear notificaciones +* Cerrar notificationes +* Enviar broadcast +* Ejecutar script/programa +* Mantener pantalla encendido * Establecer variables * Iniciar llamadas telefónicas +* Terminar llamadas telefónicas +* Copiar texto al portapapeles +* Hacer screenshot +* Cambiar ajustes de localización +* Enviar mensaje Es muy dificil mantener esta applicación functionando en todos los hardwares y versiónes de Android. Puedo probrar mucho en el emulator, pero no puedo enviar todos los errores. Si una función no funcióna - digame. En muchos años resolvaba la mayoria de los errores que los halladores me informaron bien. Pero dependo en su ayuda.