Calendar trigger

This commit is contained in:
Jens 2024-01-20 23:47:32 +01:00
parent 1ff4a15818
commit b7677bdcce
14 changed files with 502 additions and 24 deletions

View File

@ -839,4 +839,30 @@ public class Rule implements Comparable<Rule>
return false;
}
public int getAmountOfTriggersForType(Trigger.Trigger_Enum type)
{
int amount = 0;
for(Trigger t : getTriggerSet())
{
if(t.getTriggerType().equals(type))
amount++;
}
return amount;
}
public int getAmountOfActionsForType(Action.Action_Enum type)
{
int amount = 0;
for(Action a : getActionSet())
{
if(a.getAction().equals(type))
amount++;
}
return amount;
}
}

View File

@ -10,7 +10,10 @@ import android.os.Looper;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.Nullable;
import com.jens.automation2.receivers.BroadcastListener;
import com.jens.automation2.receivers.CalendarReceiver;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@ -370,19 +373,19 @@ public class Rule implements Comparable<Rule>
{
if(hasNotAppliedSinceLastExecution())
{
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " applies and has flipped since its last execution.", 4);
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule \"" + getName() + "\" applies and has flipped since its last execution.", 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);
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule \"" + getName() + "\" applies, has not flipped since its last execution, but may still be executed for other calendar events.", 4);
return true;
}
else
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " has not flipped since its last execution.", 4);
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule \"" + getName() + "\" has not flipped since its last execution.", 4);
}
else
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " does not apply.", 4);
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule \"" + getName() + "\" does not apply.", 4);
return false;
}
@ -391,7 +394,7 @@ public class Rule implements Comparable<Rule>
{
if(AutomationService.getInstance() == null)
{
Miscellaneous.logEvent("i", "RuleCheck", "Automation service not running. Rule " + getName() + " cannot apply.", 3);
Miscellaneous.logEvent("i", "RuleCheck", "Automation service not running. Rule \"" + getName() + "\" cannot apply.", 3);
return false;
}
@ -485,7 +488,7 @@ public class Rule implements Comparable<Rule>
{
boolean isActuallyToggleable = isActuallyToggable();
boolean notLastActive = getLastActivatedRule() == null || !getLastActivatedRule().equals(Rule.this);
// boolean notLastActive = getLastActivatedRule() == null || !getLastActivatedRule().equals(Rule.this);
boolean doToggle = ruleToggle && isActuallyToggleable;
String message;
@ -499,6 +502,29 @@ public class Rule implements Comparable<Rule>
if(Settings.startNewThreadForRuleActivation)
publishProgress(message);
/*
Make a note of Rule/CalendarEvent executed combinations
*/
if(Rule.this.hasTriggerOfType(Trigger.Trigger_Enum.calendarEvent))
{
for(CalendarReceiver.CalendarEvent event : CalendarReceiver.getApplyingCalendarEvents(Rule.this))
{
if(!CalendarReceiver.hasEventBeenUsedInRule(Rule.this, event))
{
/*
Record only the first calendar event that matched because the rule may
be executed once for every matching event.
*/
Miscellaneous.logEvent("i", "Rule", "Executing this rule run for calender event: " + event, 5);
CalendarReceiver.addUsedPair(new CalendarReceiver.RuleEventPair(Rule.this, event));
break;
}
}
}
/*
Run actions one after another
*/
for(int i = 0; i< Rule.this.getActionSet().size(); i++)
{
try
@ -758,4 +784,58 @@ public class Rule implements Comparable<Rule>
return null;
}
@Override
public boolean equals(@Nullable Object obj)
{
return this.getName().equals(((Rule)obj).getName());
}
public boolean hasTriggerOfType(Trigger.Trigger_Enum queryType)
{
for(Trigger t : getTriggerSet())
{
if(t.getTriggerType().equals(queryType))
return true;
}
return false;
}
public boolean hasActionOfType(Action.Action_Enum queryType)
{
for(Action a : getActionSet())
{
if(a.getAction().equals(queryType))
return true;
}
return false;
}
public int getAmountOfTriggersForType(Trigger.Trigger_Enum type)
{
int amount = 0;
for(Trigger t : getTriggerSet())
{
if(t.getTriggerType().equals(type))
amount++;
}
return amount;
}
public int getAmountOfActionsForType(Action.Action_Enum type)
{
int amount = 0;
for(Action a : getActionSet())
{
if(a.getAction().equals(type))
amount++;
}
return amount;
}
}

View File

@ -10,9 +10,12 @@ import android.os.Looper;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.Nullable;
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 java.util.ArrayList;
import java.util.Calendar;
@ -373,28 +376,28 @@ public class Rule implements Comparable<Rule>
{
if(hasNotAppliedSinceLastExecution())
{
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " applies and has flipped since its last execution.", 4);
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule \"" + getName() + "\" applies and has flipped since its last execution.", 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);
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule \"" + getName() + "\" applies, has not flipped since its last execution, but may still be executed for other calendar events.", 4);
return true;
}
else
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " has not flipped since its last execution.", 4);
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule \"" + getName() + "\" has not flipped since its last execution.", 4);
}
else
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule " + getName() + " does not apply.", 4);
Miscellaneous.logEvent("i", "getsGreenLight()", "Rule \"" + getName() + "\" does not apply.", 4);
return false;
}
public boolean applies(Context context)
{
if(AutomationService.getInstance() == null)
{
Miscellaneous.logEvent("i", "RuleCheck", "Automation service not running. Rule " + getName() + " cannot apply.", 3);
Miscellaneous.logEvent("i", "RuleCheck", "Automation service not running. Rule \"" + getName() + "\" cannot apply.", 3);
return false;
}
@ -512,7 +515,7 @@ public class Rule implements Comparable<Rule>
{
boolean isActuallyToggleable = isActuallyToggable();
boolean notLastActive = getLastActivatedRule() == null || !getLastActivatedRule().equals(Rule.this);
// boolean notLastActive = getLastActivatedRule() == null || !getLastActivatedRule().equals(Rule.this);
boolean doToggle = ruleToggle && isActuallyToggleable;
String message;
@ -526,6 +529,29 @@ public class Rule implements Comparable<Rule>
if(Settings.startNewThreadForRuleActivation)
publishProgress(message);
/*
Make a note of Rule/CalendarEvent executed combinations
*/
if(Rule.this.hasTriggerOfType(Trigger.Trigger_Enum.calendarEvent))
{
for(CalendarReceiver.CalendarEvent event : CalendarReceiver.getApplyingCalendarEvents(Rule.this))
{
if(!CalendarReceiver.hasEventBeenUsedInRule(Rule.this, event))
{
/*
Record only the first calendar event that matched because the rule may
be executed once for every matching event.
*/
Miscellaneous.logEvent("i", "Rule", "Executing this rule run for calender event: " + event, 5);
CalendarReceiver.addUsedPair(new CalendarReceiver.RuleEventPair(Rule.this, event));
break;
}
}
}
/*
Run actions one after another
*/
for(int i = 0; i< Rule.this.getActionSet().size(); i++)
{
try
@ -785,4 +811,58 @@ public class Rule implements Comparable<Rule>
return null;
}
@Override
public boolean equals(@Nullable Object obj)
{
return this.getName().equals(((Rule)obj).getName());
}
public boolean hasTriggerOfType(Trigger.Trigger_Enum queryType)
{
for(Trigger t : getTriggerSet())
{
if(t.getTriggerType().equals(queryType))
return true;
}
return false;
}
public boolean hasActionOfType(Action.Action_Enum queryType)
{
for(Action a : getActionSet())
{
if(a.getAction().equals(queryType))
return true;
}
return false;
}
public int getAmountOfTriggersForType(Trigger.Trigger_Enum type)
{
int amount = 0;
for(Trigger t : getTriggerSet())
{
if(t.getTriggerType().equals(type))
amount++;
}
return amount;
}
public int getAmountOfActionsForType(Action.Action_Enum type)
{
int amount = 0;
for(Action a : getActionSet())
{
if(a.getAction().equals(type))
amount++;
}
return amount;
}
}

View File

@ -65,8 +65,6 @@ public class CalendarReceiver extends BroadcastReceiver implements AutomationLis
public static void addUsedPair(RuleEventPair pair)
{
//TODO: Rule with multiple calendar events should be executed only once
// Add pair only if it's not in the list already.
for(RuleEventPair usedPair : calendarEventsUsed)
{
@ -593,12 +591,20 @@ public class CalendarReceiver extends BroadcastReceiver implements AutomationLis
{
if (!hasEventBeenUsedInRule(rule, event))
{
Miscellaneous.logEvent("i", "mayRuleStillBeActivatedForPendingCalendarEvents()", "Rule " + rule.getName() + " has not been used in conjunction with event " + event, 4);
return true;
/*
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.calendarEvent) == 1)
{
Miscellaneous.logEvent("i", "mayRuleStillBeActivatedForPendingCalendarEvents()", "Rule " + rule.getName() + " has not been used in conjunction with event " + event, 4);
return true;
}
}
}
}
}
return false;
}

View File

@ -810,7 +810,42 @@
<string name="accessibility_service_explanation">Erforderlich für bestimmte Aktionen.</string>
<string name="noticeRestrictedPermissions">Wenn Sie eine der folgenden Berechtigungen nicht erteilen und eine Systemmeldung wie \"Eingeschränkte Berechtigung\" erhalten, müssen Sie zuerst zu den Android-Einstellungen und dann zu den Anwendungen gehen und Automatisierung auswählen. Nun sollten sich 3 Punkte in der oberen rechten Ecke befinden. Klicken Sie auf \"Eingeschränkte Einstellungen zulassen\". Danach sollte die erforderliche Erlaubnis erteilt werden können. Dies sollte nur für die APK-Version der App gelten, nicht für die von F-Droid oder dem Play Store.</string>
<string name="setLocationService">Ortungsdienst festlegen</string>
<string name="setLocationServiceCapital">Ortungsdienst einstellen</string>
<string name="writeSecureSettingsNotice">Leider kann die Erlaubnis WRITE_SECURE_SETTINGS nicht direkt auf Ihrem Android-Gerät erteilt werden. Stattdessen müssen Sie Ihr Gerät an einen Computer anschließen und die Berechtigung über ADB erteilen. Klicken Sie hier, um zu erfahren, wie Sie es gewähren können: https://server47.de/automation/adb_hack.php</string>
<string name="actionSetLocationService">Ortungsdienst</string>
<string name="triggerUrlVariableHint">Das Ergebnis dieser Anfrage wird in der Variablen LAST_TRIGGERURL_RESULT gespeichert, wenn Sie es von einer anderen Regel aus überprüfen möchten. Im Falle von HTTP-Fehlern wie 404 ist der Wert \"HTTP_ERROR\".</string>
<string name="calendarEvent">Kalendertermin</string>
<string name="eventIsCurrentlyHappening">Termin ist derzeit aktiv</string>
<string name="calendarEventCapital">Kalendertermin</string>
<string name="location">Ort</string>
<string name="calendarDescription">Beschreibung/Anmerkungen</string>
<string name="availability">Verfügbarkeit</string>
<string name="eventIsCurrentlyNotHappening">Termin findet derzeit nicht statt/ist beendet</string>
<string name="calendarStringBusy">beschäftigt</string>
<string name="calendarStringFree">frei</string>
<string name="calendarStringTentative">vorbehaltlich</string>
<string name="calendarStringOutOfOffice">nicht im Büro</string>
<string name="calendarStringWorkingElsewhere">Anderswo arbeiten</string>
<string name="selectingNoneItemForAllToMatch">Wenn Sie kein Element auswählen, ist jedes Element in Ordnung.</string>
<string name="calendars">Kalender</string>
<string name="calendarAvailabilityTypesUnsupported">Es kann sein, dass nur die ersten 3 Typen tatsächlich funktionieren, weil die anderen Typen nicht Teil der Standard-Kalenderoberfläche von Android sind.</string>
<string name="anyCalendar">beliebiger Kalender</string>
<string name="availabilities">Verfügbarkeiten</string>
<string name="calendarsMissingHint">In diesem Trigger wurden zuvor Kalender mit der ID %1$s konfiguriert, aber seitdem gelöscht. Beim nächsten Speichern werden diese aus diesem Trigger entfernt. Bis dahin wird dieser Auslöser/diese Bedingung niemals erfüllt sein.</string>
<string name="account">Konto</string>
<string name="allDayEvent">Ganztägige Veranstaltung</string>
<string name="allDayEventTrue">Die Veranstaltung ist eine ganztägige Veranstaltung</string>
<string name="allDayEventFalse">Die Veranstaltung ist keine ganztägige Veranstaltung</string>
<string name="permissionCalendarRequired">Die Berechtigung zum Lesen Ihres Kalenders ist für einen Kalenderauslöser erforderlich. Es ist bereits erforderlich, die Kalenderfelder in diesem Fenster auszufüllen.</string>
<string name="noCalendarsOnYourDevice">Es scheint, als ob auf Ihrem Gerät keine Kalender eingerichtet wurden. Sie können diesen Trigger speichern, aber er wird nie true zurückgeben.</string>
<string name="errorReadingCalendars">Beim Lesen der Kalender auf Ihrem Gerät ist ein Fehler aufgetreten.</string>
<string name="android.permission.SCHEDULE_EXACT_ALARM">Exakte Alarme setzen</string>
<string name="alarmsPermissionHint">Nach dem Klick auf OK öffnet sich ein Fenster. Bitte wählen Sie dort Automatisierung aus und erlauben Sie der App, exakte Alarme zu planen.</string>
<string name="evaluate">Auswerten</string>
<string name="errorLoadingValues">Beim Laden von Werten ist ein Fehler aufgetreten.</string>
<string name="enterValidDataIntoParametersFields">Geben Sie gültige Daten in die Parameterfelder ein.</string>
<string name="reoccurringFalse">Ereignis ist nicht wiederkehrend</string>
<string name="reoccurringTrue">Ereignis ist wiederkehrend</string>
<string name="reoccurring">wiederkehrend</string>
<string name="calendarTriggerExecutionHints">Wenn Ihr Kalender mehrere parallele, überlappende oder direkt aufeinanderfolgende Ereignisse enthält, wird eine Regel so oft ausgeführt, wie es Ereignisse gibt, die den Kriterien der Regel entsprechen. Falls eine Regel mehrere Kalenderauslöser hat und mehrere übereinstimmende Ereignisse parallel vorhanden sind, wird die Regel nur einmal ausgeführt.</string>
</resources>

View File

@ -8,9 +8,9 @@
<string name="languageDutch">Holandés</string>
<string name="languageRussian">Ruso</string>
<string name="languageFrench">Francés</string>
<string name="ruleActivate">Estoy activando regla %1$s</string>
<string name="profileActivate">Estoy activando perfil %1$s</string>
<string name="ruleActivateToggle">Estoy activando regla %1$s en el modo de invertir</string>
<string name="ruleActivate">Activando regla %1$s</string>
<string name="profileActivate">Activando perfil %1$s</string>
<string name="ruleActivateToggle">Activando regla %1$s en el modo de invertir</string>
<string name="addPoi">Crear sitio</string>
<string name="addRule">Crear regla</string>
<string name="poiList">Lista de sitios:</string>
@ -809,7 +809,42 @@
<string name="accessibility_service_explanation">Requerido para ciertas acciones.</string>
<string name="noticeRestrictedPermissions">Si no le otorga a uno el siguiente permiso y un mensaje del sistema como \"Ajuste restringido\", primero debe ir a la configuración de Android, luego a las aplicaciones, elija Automatización. Ahora debería haber 3 puntos en la esquina superior derecha. Haga clic en \"Permitir configuraciones restringidas\". Después de eso, el permiso necesario debería poder otorgarse. Esto solo debería aplicarse a la versión APK de la aplicación, no a las de F-Droid o Play Store.</string>
<string name="setLocationService">Encender/desactivar el servicio de ubicación</string>
<string name="setLocationServiceCapital">Establecer el servicio de ubicación</string>
<string name="writeSecureSettingsNotice">Desafortunadamente, el permiso WRITE_SECURE_SETTINGS no se puede otorgar directamente en su dispositivo Android. En su lugar, debe conectar su dispositivo a una computadora y otorgar el permiso a través de ADB. Haga clic aquí para saber cómo otorgarlo: https://server47.de/automation/adb_hack.php</string>
<string name="actionSetLocationService">Servicio de localización</string>
<string name="triggerUrlVariableHint">El resultado de esta solicitud se almacenará en la variable LAST_TRIGGERURL_RESULT si desea verificarlo desde otra regla. En caso de errores HTTP como 404, el valor será \"HTTP_ERROR\".</string>
<string name="calendarEvent">Evento de calendario</string>
<string name="eventIsCurrentlyHappening">El evento está activo actualmente</string>
<string name="calendarEventCapital">evento de calendario</string>
<string name="location">Lugar</string>
<string name="calendarDescription">Descripción/notas</string>
<string name="availability">Disponibilidad</string>
<string name="eventIsCurrentlyNotHappening">El evento no está ocurriendo actualmente/ha finalizado</string>
<string name="calendarStringBusy">ocupado</string>
<string name="calendarStringFree">libre</string>
<string name="calendarStringTentative">intento</string>
<string name="calendarStringOutOfOffice">fuera de la oficina</string>
<string name="calendarStringWorkingElsewhere">Trabajar en otro lugar</string>
<string name="selectingNoneItemForAllToMatch">Si no selecciona ningún elemento, cualquiera estará bien.</string>
<string name="calendars">Calendarios</string>
<string name="calendarAvailabilityTypesUnsupported">Puede ser que solo los primeros 3 tipos funcionen realmente porque los otros tipos no forman parte de la interfaz de calendario estándar de Android.</string>
<string name="anyCalendar">cualquier calendario</string>
<string name="availabilities">Disponibilidades</string>
<string name="calendarsMissingHint">En este desencadenador, los calendarios con ID %1$s se han configurado previamente, pero se han eliminado desde entonces. Con el siguiente guardado, se eliminarán de este activador. Hasta entonces, este desencadenante/condición nunca se cumplirá.</string>
<string name="account">cuenta</string>
<string name="allDayEvent">Evento de todo el día</string>
<string name="allDayEventTrue">El evento es un evento de todo el día</string>
<string name="allDayEventFalse">El evento no es un evento de todo el día</string>
<string name="permissionCalendarRequired">El permiso para leer el calendario será necesario para un activador de calendario. Ya será necesario rellenar los campos del calendario en esta ventana.</string>
<string name="noCalendarsOnYourDevice">Parece que no se han configurado calendarios en su dispositivo. Puede guardar este desencadenador, pero nunca devolverá true.</string>
<string name="errorReadingCalendars">Se ha producido un error al leer los calendarios de su dispositivo.</string>
<string name="android.permission.SCHEDULE_EXACT_ALARM">Programe alarmas exactas</string>
<string name="alarmsPermissionHint">Después de hacer clic en Aceptar, se abrirá una ventana. Seleccione Automatización allí y permita que la aplicación programe alarmas exactas.</string>
<string name="evaluate">Evaluar</string>
<string name="errorLoadingValues">Se ha producido un error al cargar los valores.</string>
<string name="enterValidDataIntoParametersFields">Introduzca datos válidos en los campos de parámetros.</string>
<string name="reoccurringFalse">El evento no se repite</string>
<string name="reoccurringTrue">El evento se repite</string>
<string name="reoccurring">Recurrente</string>
<string name="calendarTriggerExecutionHints">Si su calendario contiene varios eventos paralelos, superpuestos o directamente posteriores, una regla se ejecutará tantas veces como eventos coincidan con los criterios de la regla. En caso de que una regla tenga varios activadores de calendario y haya varios eventos coincidentes en paralelo, la regla se ejecutará solo una vez.</string>
</resources>

View File

@ -809,7 +809,43 @@
<string name="accessibility_service_explanation">Obligatoire pour certaines actions.</string>
<string name="noticeRestrictedPermissions">Si vous ne parvenez pas à accorder à l\'un d\'entre eux l\'autorisation suivante et un message système tel que « Autorisation restreinte », vous devez d\'abord accéder aux paramètres Android, puis aux applications, puis choisir Automatisation. Maintenant, il devrait y avoir 3 points dans le coin supérieur droit. Cliquez sur « Autoriser les paramètres restreints ». Après cela, l\'autorisation nécessaire devrait pouvoir être accordée. Cela ne devrait s\'appliquer qu\'à la version APK de l\'application, pas à celles de F-Droid ou du Play Store.</string>
<string name="setLocationService">Définir le service de localisation</string>
<string name="setLocationServiceCapital">Définir le service de localisation</string>
<string name="writeSecureSettingsNotice">Malheureusement, l\'autorisation WRITE_SECURE_SETTINGS ne peut pas être donnée directement sur votre appareil Android. Au lieu de cela, vous devez connecter votre appareil à un ordinateur et accorder l\'autorisation via ADB. Cliquez ici pour savoir comment l\'accorder : https://server47.de/automation/adb_hack.php</string>
<string name="actionSetLocationService">Service de localisation</string>
<string name="triggerUrlVariableHint">Le résultat de cette requête sera stocké dans la variable LAST_TRIGGERURL_RESULT si vous souhaitez le vérifier à partir d\'une autre règle. En cas d\'erreurs HTTP comme 404, la valeur sera « HTTP_ERROR ».</string>
<string name="calendarEvent">Événement de calendrier</string>
<string name="eventIsCurrentlyHappening">L\'événement est actuellement actif</string>
<string name="calendarEventCapital">Evénement de calendrier</string>
<string name="location">Emplacement</string>
<string name="calendarDescription">Description/notes</string>
<string name="availability">Beschikbaarheid</string>
<string name="eventIsCurrentlyNotHappening">L\'événement n\'a pas lieu ou s\'est terminé</string>
<string name="calendarStringBusy">occupé</string>
<string name="calendarStringFree">libre</string>
<string name="calendarStringTentative">tentative</string>
<string name="calendarStringOutOfOffice">absent du bureau</string>
<string name="calendarStringWorkingElsewhere">Travailler ailleurs</string>
<string name="calendarStringWorkingElsewhere">Travailler ailleurs</string>
<string name="selectingNoneItemForAllToMatch">Si vous ne sélectionnez aucun élément, n\'importe lequel d\'entre eux sera acceptable.</string>
<string name="calendars">Calendriers</string>
<string name="calendarAvailabilityTypesUnsupported">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.</string>
<string name="anyCalendar">n\'importe quel calendrier</string>
<string name="availabilities">Disponibilités</string>
<string name="calendarsMissingHint">Dans ce déclencheur, les calendriers avec des ID %1$s ont été configurés précédemment, mais ont été supprimés depuis. Lors de la prochaine sauvegarde, ceux-ci seront supprimés de ce déclencheur. D\'ici là, ce déclencheur/condition ne sera jamais rempli.</string>
<string name="account">compte</string>
<string name="allDayEvent">Événement d\'une journée</string>
<string name="allDayEventTrue">L\'événement est un événement d\'une journée</string>
<string name="allDayEventFalse">L\'événement n\'est pas un événement d\'une journée</string>
<string name="permissionCalendarRequired">event isL\'autorisation de lire votre calendrier sera requise pour un déclencheur de calendrier. Il sera déjà nécessaire de remplir les champs du calendrier dans cette fenêtre. Il ne s\'agit pas d\'un événement qui dure toute la journée</string>
<string name="noCalendarsOnYourDevice">Il semble qu\'aucun calendrier n\'ait été configuré sur votre appareil. Vous pouvez enregistrer ce déclencheur, mais il ne renverra jamais true.</string>
<string name="errorReadingCalendars">Une erreur s\'est produite lors de la lecture des calendriers sur votre appareil.</string>
<string name="android.permission.SCHEDULE_EXACT_ALARM">Programmer des alarmes exactes</string>
<string name="alarmsPermissionHint">Après avoir cliqué sur OK, une fenêtre s\'ouvre. Veuillez sélectionner Automatisation et permettre à l\'application de programmer des alarmes précises.</string>
<string name="evaluate">Évaluer</string>
<string name="errorLoadingValues">Une erreur s\'est produite lors du chargement des valeurs.</string>
<string name="enterValidDataIntoParametersFields">Saisissez des données valides dans les champs de paramètre.</string>
<string name="reoccurringFalse">l\'événement ne se reproduit pas</string>
<string name="reoccurringTrue">l\'événement se reproduit</string>
<string name="reoccurring">Récurrents</string>
<string name="calendarTriggerExecutionHints">Si votre calendrier contient plusieurs événements parallèles, qui se chevauchent ou qui se suivent directement, une règle sera exécutée autant de fois qu\'il y a d\'événements correspondant aux critères de la règle. Dans le cas où une règle a plusieurs déclencheurs de calendrier et qu\'il y a plusieurs événements correspondants en parallèle, la règle ne sera exécutée qu\'une seule fois.</string>
</resources>

View File

@ -810,7 +810,43 @@
<string name="accessibility_service_explanation">Obbligatorio per determinate azioni.</string>
<string name="noticeRestrictedPermissions">Se non riesci a concedere una delle seguenti autorizzazioni e un messaggio di sistema come \"Autorizzazione limitata\", devi prima andare alle impostazioni di Android, quindi alle applicazioni, scegli Automazione. Ora dovrebbero esserci 3 punti nell\'angolo in alto a destra. Fai clic su \"Consenti impostazioni limitate\". Dopodiché dovrebbe essere concessa l\'autorizzazione necessaria. Questo dovrebbe valere solo per la versione APK dell\'app, non per quelle di F-Droid o Play Store.</string>
<string name="setLocationService">Impostare il servizio di localizzazione</string>
<string name="setLocationServiceCapital">Impostare il servizio di localizzazione</string>
<string name="writeSecureSettingsNotice">Purtroppo l\'autorizzazione WRITE_SECURE_SETTINGS non può essere data direttamente sul tuo dispositivo Android. Invece, devi collegare il tuo dispositivo a un computer e concedere l\'autorizzazione tramite ADB. Clicca qui per scoprire come concederlo: https://server47.de/automation/adb_hack.php</string>
<string name="actionSetLocationService">Servizio di localizzazione</string>
<string name="triggerUrlVariableHint">Il risultato di questa richiesta verrà memorizzato nella variabile LAST_TRIGGERURL_RESULT se si desidera controllarlo da un\'altra regola. In caso di errori HTTP come 404 il valore sarà \"HTTP_ERROR\".</string>
<string name="calendarEvent">Evento del calendario</string>
<string name="eventIsCurrentlyHappening">L\'evento è attualmente attivo</string>
<string name="calendarEventCapital">evento del calendario</string>
<string name="location">Ubicazione</string>
<string name="calendarDescription">Descrizione/note</string>
<string name="availability">Disponibilità</string>
<string name="eventIsCurrentlyNotHappening">L\'evento al momento non è in corso/è terminato</string>
<string name="calendarStringBusy">occupato</string>
<string name="calendarStringFree">gratuito</string>
<string name="calendarStringTentative">tentativo</string>
<string name="calendarStringOutOfOffice">Fuori sede</string>
<string name="calendarStringWorkingElsewhere">Lavorare altrove</string>
<string name="selectingNoneItemForAllToMatch">Se non selezioni nessun elemento, tutti saranno ok.</string>
<string name="calendars">Calendari</string>
<string name="calendars">Calendari</string>
<string name="calendarAvailabilityTypesUnsupported">È possibile che solo i primi 3 tipi funzionino effettivamente perché gli altri tipi non fanno parte dell\'interfaccia del calendario standard di Android.</string>
<string name="anyCalendar">qualsiasi calendario</string>
<string name="availabilities">Disponibilità</string>
<string name="calendarsMissingHint">In questo trigger i calendari con ID %1$s sono stati configurati in precedenza, ma sono stati eliminati da allora. Con il prossimo salvataggio, questi verranno rimossi da questo attivatore. Fino ad allora, questa condizione non sarà mai soddisfatta.</string>
<string name="account">conto</string>
<string name="allDayEvent">Evento che dura tutto il giorno</string>
<string name="allDayEventTrue">L\'evento è un evento che dura tutto il giorno</string>
<string name="allDayEventFalse">L\'evento non è un evento che dura tutto il giorno</string>
<string name="permissionCalendarRequired">L\'autorizzazione per leggere il calendario sarà necessaria per un trigger di calendario. Sarà già necessario compilare i campi del calendario in questa finestra.</string>
<string name="noCalendarsOnYourDevice">Sembra che sul tuo dispositivo non sia stato impostato alcun calendario. È possibile salvare questo trigger, ma non restituirà mai true.</string>
<string name="errorReadingCalendars">Si è verificato un errore durante la lettura dei calendari sul dispositivo.</string>
<string name="android.permission.SCHEDULE_EXACT_ALARM">Pianifica allarmi esatti</string>
<string name="alarmsPermissionHint">Dopo aver fatto clic su OK, si aprirà una finestra. Seleziona Automazione lì e consenti all\'app di programmare allarmi esatti.</string>
<string name="evaluate">Valutare</string>
<string name="errorLoadingValues">Si è verificato un errore durante il caricamento dei valori.</string>
<string name="enterValidDataIntoParametersFields">Immettere dati validi nei campi dei parametri.</string>
<string name="reoccurringFalse">l\'evento non si ripete</string>
<string name="reoccurringTrue">l\'evento si ripete</string>
<string name="reoccurring">Reoccurring</string>
<string name="calendarTriggerExecutionHints">Se il calendario contiene più eventi paralleli, sovrapposti o direttamente successivi, una regola verrà eseguita tante volte quanti sono gli eventi che corrispondono ai criteri della regola. Nel caso in cui una regola disponga di più trigger di calendario e siano presenti più eventi corrispondenti in parallelo, la regola verrà eseguita una sola volta.</string>
</resources>

View File

@ -808,8 +808,43 @@
<string name="accessibility_service_explanation">Vereist voor bepaalde acties.</string>
<string name="noticeRestrictedPermissions">Als u er niet in slaagt om een van de volgende machtigingen en een systeembericht zoals \"Beperkte toestemming\" te verlenen, moet u eerst naar Android-instellingen gaan en vervolgens naar toepassingen en Automatisering kiezen. Nu zouden er 3 stippen in de rechterbovenhoek moeten zijn. Klik op \"Beperkte instellingen toestaan\". Daarna moet de benodigde toestemming aanvaardbaar zijn. Dit zou alleen van toepassing moeten zijn op de APK-versie van de app, niet die van F-Droid of Play Store.</string>
<string name="setLocationService">Locatieservice instellen</string>
<string name="setLocationServiceCapital">Locatieservice instellen</string>
<string name="writeSecureSettingsNotice">Helaas kan de toestemming WRITE_SECURE_SETTINGS niet rechtstreeks op uw Android-apparaat worden gegeven. In plaats daarvan moet u uw apparaat op een computer aansluiten en de toestemming verlenen via ADB. Klik hier om te weten te komen hoe u het kunt toekennen: https://server47.de/automation/adb_hack.php</string>
<string name="actionSetLocationService">Locatie service</string>
<string name="triggerUrlVariableHint">Het resultaat van dit verzoek wordt opgeslagen in de variabele LAST_TRIGGERURL_RESULT als u het vanuit een andere regel wilt controleren. In het geval van HTTP-fouten zoals 404 is de waarde \"HTTP_ERROR\".</string>
<string name="calendarEvent">Agenda-afspraak</string>
<string name="eventIsCurrentlyHappening">Begivenheden er aktiv i øjeblikket</string>
<string name="calendarEventCapital">agenda-afspraak</string>
<string name="location">Plaats</string>
<string name="calendarDescription">Beschrijving/opmerkingen</string>
<string name="availability">Beschikbaarheid</string>
<string name="eventIsCurrentlyNotHappening">Evenement vindt momenteel niet plaats/is afgelopen</string>
<string name="calendarStringBusy">druk</string>
<string name="calendarStringFree">vrij</string>
<string name="calendarStringTentative">proberen</string>
<string name="calendarStringOutOfOffice">Niet op kantoor</string>
<string name="calendarStringWorkingElsewhere">elders werken</string>
<string name="selectingNoneItemForAllToMatch">Als u geen item selecteert, is elk item in orde.</string>
<string name="calendars">Kalenders</string>
<string name="calendarAvailabilityTypesUnsupported">Het kan zijn dat alleen de eerste 3 typen daadwerkelijk werken omdat de andere typen geen deel uitmaken van de standaard agenda-interface van Android.</string>
<string name="anyCalendar">elke kalender</string>
<string name="availabilities">Beschikbaarheid</string>
<string name="calendarsMissingHint">In deze trigger zijn kalenders met ID\'s %1$s eerder geconfigureerd, maar sindsdien verwijderd. Bij de volgende save worden die uit deze trigger verwijderd. Tot die tijd zal nooit aan deze trigger/voorwaarde worden voldaan.</string>
<string name="account">rekening</string>
<string name="allDayEvent">Evenement dat de hele dag duurt</string>
<string name="allDayEventTrue">evenement is een evenement dat de hele dag duurt</string>
<string name="allDayEventFalse">evenement is niet een evenement dat de hele dag duurt</string>
<string name="permissionCalendarRequired">De toestemming om uw agenda te lezen is vereist voor een agendatrigger. Het is al nodig om de kalendervelden in dit venster in te vullen.</string>
<string name="noCalendarsOnYourDevice">Het lijkt erop dat er geen agenda\'s zijn ingesteld op uw apparaat. U kunt deze trigger opslaan, maar deze wordt nooit waar geretourneerd.</string>
<string name="errorReadingCalendars">Er is een fout opgetreden bij het lezen van de agenda\'s op uw apparaat.</string>
<string name="android.permission.SCHEDULE_EXACT_ALARM">Plan exacte alarmen</string>
<string name="alarmsPermissionHint">Nadat u op OK hebt geklikt, wordt een venster geopend. Selecteer daar Automatisering en laat de app exacte alarmen plannen.</string>
<string name="evaluate">Evalueren</string>
<string name="errorLoadingValues">Er is een fout opgetreden tijdens het laden van waarden.</string>
<string name="enterValidDataIntoParametersFields">Voer geldige gegevens in de parametervelden in.</string>
<string name="reoccurringFalse">gebeurtenis zich niet opnieuw voordoet</string>
<string name="reoccurringTrue">gebeurtenis zich opnieuw voordoet</string>
<string name="reoccurring">Terugkerende</string>
<string name="calendarTriggerExecutionHints">Als uw agenda meerdere parallelle, overlappende of direct volgende gebeurtenissen bevat, wordt een regel net zo vaak uitgevoerd als er afspraken zijn die voldoen aan de criteria van de regel. Als een regel meerdere agendatriggers heeft en er meerdere overeenkomende gebeurtenissen parallel zijn, wordt de regel slechts één keer uitgevoerd.</string>
</resources>

View File

@ -907,7 +907,42 @@
<string name="accessibility_service_explanation">Wymagane w przypadku niektórych działań.</string>
<string name="noticeRestrictedPermissions">Jeśli nie uda Ci się przyznać następującego uprawnienia i komunikatu systemowego, takiego jak \"Ograniczone uprawnienia\", musisz najpierw przejść do ustawień Androida, a następnie aplikacji, wybrać Automatyzacja. Teraz w prawym górnym rogu powinny znajdować się 3 kropki. Kliknij \"Zezwól na ustawienia z ograniczeniami\". Następnie powinno być możliwe udzielenie niezbędnego pozwolenia. Powinno to dotyczyć tylko wersji APK aplikacji, a nie tych z F-Droid lub Sklepu Play.</string>
<string name="setLocationService">Ustawianie usługi lokalizacyjnej</string>
<string name="setLocationServiceCapital">Ustawianie usługi lokalizacyjnej</string>
<string name="writeSecureSettingsNotice">Niestety WRITE_SECURE_SETTINGS uprawnień nie można nadać bezpośrednio na urządzeniu z Androidem. Zamiast tego musisz podłączyć urządzenie do komputera i przyznać uprawnienia przez ADB. Kliknij tutaj, aby dowiedzieć się, jak go przyznać: https://server47.de/automation/adb_hack.php</string>
<string name="actionSetLocationService">Usługa lokalizacyjna</string>
<string name="triggerUrlVariableHint">Wynik tego żądania zostanie zapisany w zmiennej LAST_TRIGGERURL_RESULT, jeśli chcesz go sprawdzić z innej reguły. W przypadku błędów HTTP, takich jak 404, wartość będzie wynosić \"HTTP_ERROR\".</string>
<string name="calendarEvent">Wydarzenie w kalendarzu</string>
<string name="eventIsCurrentlyHappening">Wydarzenie jest obecnie aktywne</string>
<string name="calendarEventCapital">wydarzenie w kalendarzu</string>
<string name="location">Lokalizacja</string>
<string name="calendarDescription">Opis/uwagi</string>
<string name="availability">Dostępność</string>
<string name="eventIsCurrentlyNotHappening">Wydarzenie obecnie się nie odbywa/zakończyło</string>
<string name="calendarStringBusy">zajęty</string>
<string name="calendarStringFree">wolny</string>
<string name="calendarStringTentative">próba</string>
<string name="calendarStringOutOfOffice">poza biurem</string>
<string name="calendarStringWorkingElsewhere">praca w innym miejscu</string>
<string name="selectingNoneItemForAllToMatch">Jeśli nie wybierzesz żadnego elementu, każdy będzie w porządku.</string>
<string name="calendars">Kalendarze</string>
<string name="calendarAvailabilityTypesUnsupported">Może się zdarzyć, że tylko pierwsze 3 typy faktycznie działają, ponieważ inne typy nie są częścią standardowego interfejsu kalendarza Androida.</string>
<string name="anyCalendar">dowolny kalendarz</string>
<string name="availabilities">Dostępność</string>
<string name="calendarsMissingHint">W tym wyzwalaczu kalendarze o identyfikatorach %1$s zostały wcześniej skonfigurowane, ale od tego czasu zostały usunięte. Przy następnym zapisie zostaną one usunięte z tego wyzwalacza. Do tego czasu ten wyzwalacz/warunek nigdy nie zostanie spełniony.</string>
<string name="account">rachunek</string>
<string name="allDayEvent">Wydarzenie całodniowe</string>
<string name="allDayEventTrue">Wydarzenie jest wydarzeniem całodniowym</string>
<string name="allDayEventFalse">Wydarzenie nie jest wydarzeniem całodniowym</string>
<string name="permissionCalendarRequired">Uprawnienie do odczytu kalendarza będzie wymagane dla wyzwalacza kalendarza. Wymagane będzie już wypełnienie pól kalendarza w tym oknie.</string>
<string name="noCalendarsOnYourDevice">Wygląda na to, że na urządzeniu nie skonfigurowano żadnych kalendarzy. Możesz zapisać ten wyzwalacz, ale nigdy nie zwróci on wartości true.</string>
<string name="errorReadingCalendars">Wystąpił błąd podczas odczytywania kalendarzy na urządzeniu.</string>
<string name="android.permission.SCHEDULE_EXACT_ALARM">Zaplanuj dokładne alarmy</string>
<string name="alarmsPermissionHint">Po kliknięciu OK otworzy się okno. Wybierz tam Automatyzacja i zezwól aplikacji na zaplanowanie dokładnych alarmów.</string>
<string name="evaluate">Oceniać</string>
<string name="errorLoadingValues">Wystąpił błąd podczas ładowania wartości.</string>
<string name="enterValidDataIntoParametersFields">Wprowadź prawidłowe dane w polach parametrów.</string>
<string name="reoccurringFalse">zdarzenie nie powtarza się</string>
<string name="reoccurringTrue">zdarzenie powtarza się</string>
<string name="reoccurring">Cyklicznych</string>
<string name="calendarTriggerExecutionHints">Jeśli Twój kalendarz zawiera wiele równoległych, nakładających się na siebie lub bezpośrednio następujących wydarzeń, reguła zostanie wykonana tyle razy, ile jest wydarzeń spełniających kryteria reguły. Jeśli reguła ma wiele wyzwalaczy kalendarza i równolegle występuje wiele pasujących zdarzeń, reguła zostanie wykonana tylko raz.</string>
</resources>

View File

@ -867,7 +867,42 @@
<string name="accessibility_service_explanation">Required for certain actions.</string>
<string name="noticeRestrictedPermissions">Если вы не можете предоставить одно из следующих разрешений и системное сообщение типа «Ограниченное разрешение», вам нужно сначала перейти в настройки Android, затем в приложения, выбрать «Автоматизация». Теперь в правом верхнем углу должно быть 3 точки. Нажмите «Разрешить ограниченные настройки». После этого необходимо получить необходимое разрешение. Это должно относиться только к APK-версии приложения, а не к версии из F-Droid или Play Store.</string>
<string name="setLocationService">Настройка службы определения местоположения</string>
<string name="writeSecureSettingsNotice">К сожалению, разрешение WRITE_SECURE_SETTINGS не может быть дано непосредственно на вашем Android-устройстве. Вместо этого вам нужно подключить устройство к компьютеру и предоставить разрешение через ADB. Нажмите здесь, чтобы узнать, как его получить: https://server47.de/automation/adb_hack.php</string>
<string name="setLocationServiceCapital">Настройка службы определения местоположения</string>
<string name="writeSecureSettingsNotice">К сожалению, разрешение WRITE_SECURE_SETTINGS не может быть дано непосредственно на вашем Android-устройстве. Вместо этого вам нужно подключить устройство к компьютеру и предоставить разрешение через ADB. Нажмите здесь, чтобы узнать, как его получить: https://server47.de/automation/adb_hack.php</string>
<string name="actionSetLocationService">Служба определения местоположения</string>
<string name="triggerUrlVariableHint">Результат этого запроса будет сохранен в переменной LAST_TRIGGERURL_RESULT если вы захотите проверить его из другого правила. В случае ошибок HTTP, таких как 404, значение будет \"HTTP_ERROR\".</string>
<string name="calendarEvent">Событие календаря</string>
<string name="eventIsCurrentlyHappening">Событие в данный момент активно</string>
<string name="calendarEventCapital">Событие календаря</string>
<string name="location">Местоположение</string>
<string name="calendarDescription">Описание/примечания</string>
<string name="availability">Наличие</string>
<string name="eventIsCurrentlyNotHappening">Событие в настоящее время не происходит/завершилось</string>
<string name="calendarStringBusy">занятый</string>
<string name="calendarStringFree">свободный</string>
<string name="calendarStringTentative">попытка</string>
<string name="calendarStringOutOfOffice">Вне офиса</string>
<string name="calendarStringWorkingElsewhere">Работа в другом месте</string>
<string name="selectingNoneItemForAllToMatch">Если вы не выберете ни одного элемента, подойдет любой.</string>
<string name="calendars">Календари</string>
<string name="calendarAvailabilityTypesUnsupported">Возможно, на самом деле работают только первые 3 типа, потому что остальные типы не являются частью стандартного интерфейса календаря Android.</string>
<string name="anyCalendar">Любой календарь</string>
<string name="availabilities">Наличии</string>
<string name="calendarsMissingHint">В этом триггере календари с идентификаторами %1$s были настроены ранее, но с тех пор были удалены. При следующем сохранении они будут удалены из этого триггера. До тех пор этот триггер/условие никогда не будет выполнен.</string>
<string name="account">счет</string>
<string name="allDayEvent">Мероприятие в течение всего дня</string>
<string name="allDayEventTrue">Событие - это событие на весь день</string>
<string name="allDayEventFalse">Событие не является событием на весь день</string>
<string name="permissionCalendarRequired">Для триггера календаря потребуется разрешение на чтение календаря. Уже потребуется заполнить поля календаря в этом окне.</string>
<string name="noCalendarsOnYourDevice">Похоже, что на вашем устройстве не настроены календари. Вы можете сохранить этот триггер, но он никогда не вернет true.</string>
<string name="errorReadingCalendars">Произошла ошибка при чтении календарей на вашем устройстве.</string>
<string name="android.permission.SCHEDULE_EXACT_ALARM">Планирование точных сигналов тревоги</string>
<string name="alarmsPermissionHint">После нажатия кнопки ОК откроется окно. Выберите там «Автоматизация» и разрешите приложению планировать точные сигналы тревоги.</string>
<string name="evaluate">Оценивать</string>
<string name="errorLoadingValues">Произошла ошибка при загрузке значений.</string>
<string name="enterValidDataIntoParametersFields">Введите допустимые данные в поля параметров.</string>
<string name="reoccurringFalse">событие не повторяется</string>
<string name="reoccurringTrue">Событие повторяется</string>
<string name="reoccurring">Повторяющиеся</string>
<string name="calendarTriggerExecutionHints">Если календарь содержит несколько параллельных, перекрывающихся или непосредственно следующих событий, правило будет выполняться столько раз, сколько событий соответствует критериям правила. В случае, если правило имеет несколько календарных триггеров и параллельно существует несколько совпадающих событий, то правило будет выполнено только один раз.</string>
</resources>

View File

@ -808,7 +808,45 @@
<string name="accessibility_service_explanation">对于某些操作是必需的。</string>
<string name="noticeRestrictedPermissions">如果您未能授予以下权限和\"受限权限\"之类的系统消息,则需要先转到 Android 设置,然后转到应用程序,选择自动化。现在右上角应该有 3 个点。单击\"允许受限设置\"。之后,应该可以授予必要的权限。这应该仅适用于应用的 APK 版本,而不适用于 F-Droid 或 Play 商店中的版本。</string>
<string name="setLocationService">设置位置服务</string>
<string name="setLocationServiceCapital">设置位置服务</string>
<string name="writeSecureSettingsNotice">不幸的是WRITE_SECURE_SETTINGS无法直接在您的 Android 设备上授予权限。相反,您需要将设备连接到计算机并通过 ADB 授予权限。单击此处了解如何授予它: https://server47.de/automation/adb_hack.php</string>
<string name="actionSetLocationService">定位服务</string>
<string name="triggerUrlVariableHint">此请求的结果将存储在变量 LAST_TRIGGERURL_RESULT 中,如果您希望从其他规则中检查它。如果出现像 404 这样的 HTTP 错误,则该值将为\"HTTP_ERROR\"。</string>
<string name="calendarEvent">日历事件</string>
<string name="eventIsCurrentlyHappening">活动当前处于活动状态</string>
<string name="calendarEventCapital">日历事件</string>
<string name="location">位置</string>
<string name="calendarDescription">描述/注释</string>
<string name="availability">可用性</string>
<string name="eventIsCurrentlyNotHappening">活动当前未发生/已结束</string>
<string name="calendarStringBusy"></string>
<string name="calendarStringFree">自由</string>
<string name="calendarStringTentative">尝试</string>
<string name="calendarStringOutOfOffice">不在办公室</string>
<string name="calendarStringOutOfOffice">不在办公室</string>
<string name="calendarStringOutOfOffice">不在办公室</string>
<string name="calendarStringWorkingElsewhere">在其他地方工作</string>
<string name="selectingNoneItemForAllToMatch">如果您不选择任何项目,则任何一个都可以。</string>
<string name="calendars">日历</string>
<string name="calendarAvailabilityTypesUnsupported">可能只有前 3 种类型真正有效,因为其他类型不是 Android 标准日历界面的一部分。</string>
<string name="anyCalendar">任何日历</string>
<string name="availabilities">可用性</string>
<string name="calendarsMissingHint">在此触发器中,以前已配置了 ID 为 %1$s 的日历,但此后已被删除。在下次保存时,这些将从此触发器中删除。在此之前,此触发器/条件将永远不会得到满足。</string>
<string name="account">account</string>
<string name="account">帐户</string>
<string name="allDayEvent">全天活动</string>
<string name="allDayEventTrue">活动是全天活动</string>
<string name="allDayEventFalse">活动不是一整天的活动</string>
<string name="permissionCalendarRequired">日历触发器需要读取日历的权限。在此窗口中填充日历字段已经是必需的。</string>
<string name="noCalendarsOnYourDevice">您的设备上似乎没有设置日历。您可以保存此触发器,但它永远不会返回 true。</string>
<string name="errorReadingCalendars">读取设备上的日历时出错。</string>
<string name="android.permission.SCHEDULE_EXACT_ALARM">安排确切的警报</string>
<string name="alarmsPermissionHint">单击\"确定\"后,将打开一个窗口。请在那里选择自动化,并允许应用程序安排确切的警报。</string>
<string name="evaluate">评价</string>
<string name="errorLoadingValues">加载值时发生错误。</string>
<string name="enterValidDataIntoParametersFields">在参数字段中输入有效数据。</string>
<string name="reoccurringFalse">事件不会再次发生</string>
<string name="reoccurringTrue">事件再次发生</string>
<string name="reoccurring">重复发生</string>
<string name="calendarTriggerExecutionHints">如果您的日历包含多个平行、重叠或直接跟随的事件,则规则的执行次数将与规则条件匹配的事件次数相同。如果规则具有多个日历触发器,并且并行有多个匹配事件,则该规则将仅执行一次。</string>
</resources>

View File

@ -897,7 +897,7 @@
<string name="bindAccessibilityService">Bind to accessibility service</string>
<string name="accessibilityApiPermissionHint">After clicking OK you\'ll be sent to a system dialog. Please select Automation there and allow "Allow accessibility API".</string>
<string name="accessibility_service_explanation">Required for certain actions.</string>
<string name="noticeRestrictedPermissions">If you fail to grant one the following permission and a system message like \"Restricted permission\" you need to go to Android settings first, then applications, choose Automation. Now there should be 3 dots in the upper right corner. Click \"Allow restricted settings\". After that the necessary permission should be grantable. This should only apply to the APK version of the app, not the ones from F-Droid or Play Store.</string>
<string name="noticeRestrictedPermissions">If you fail to grant one the following permission and a system message like \"Restricted permission\" you need to go to Android settings first, then applications, choose Automation. Now there should be 3 dots in the upper right corner. Click \"Allow restricted settings\". After that the necessary permission should be grant-able. This should only apply to the APK version of the app, not the ones from F-Droid or Play Store.</string>
<string name="setLocationService">set location service</string>
<string name="setLocationServiceCapital">Set location service</string>
<string name="writeSecureSettingsNotice">Unfortunately the permission WRITE_SECURE_SETTINGS cannot be given directly on your Android device. Instead you need to connect your device to a computer and grant the permission via ADB. Click here to find out how to grant it: https://server47.de/automation/adb_hack.php</string>
@ -920,7 +920,7 @@
<string name="calendarStringWorkingElsewhere">working elsewhere</string>
<string name="selectingNoneItemForAllToMatch">If you select no item, any one will be ok.</string>
<string name="calendars">Calendars</string>
<string name="calendarAvailabilityTypesUnsupported">It may be that only the first 3 types are actually working because the other types are not part of Google Calendar.</string>
<string name="calendarAvailabilityTypesUnsupported">It may be that only the first 3 types are actually working because the other types are not part of Android\'s standard calendar interface.</string>
<string name="anyCalendar">any calender</string>
<string name="availabilities">availabilities</string>
<string name="calendarsMissingHint">In this trigger calendars with IDs %1$s have been previously configured, but have been deleted since. With the next save those will be removed from this trigger. Until then this trigger/condition will never be met.</string>
@ -939,5 +939,5 @@
<string name="reoccurringFalse">event is not reoccurring</string>
<string name="reoccurringTrue">event is reoccurring</string>
<string name="reoccurring">reoccurring</string>
<string name="calendarTriggerExecutionHints">If your calendar holds multiple events in parallel, a rule would get executed as many time as there are events matching the rule\'s criteria. Also for events that directly follow each other a rule with a matching event trigger would get executed twice.\nOnly in case a rule has multiple calendar triggers and there are multiple matching events in parallel the rule will get executed only once.</string>
<string name="calendarTriggerExecutionHints">If your calendar holds multiple parallel, overlapping or directly following events, a rule will get executed as many times as there are events matching the rule\'s criteria. In case a rule has multiple calendar triggers and there are multiple matching events in parallel, then the rule will get executed only once.</string>
</resources>

View File

@ -4,6 +4,7 @@
* Fixed: Storage permission might be displayed as not granted even if it was
* Fixed: Applied a very old bugfix also to F-Droid and Google-Play editions that had by mistake been implemented only in the APK edition (timeFrame trigger with repetitions)
* Fixed: Rare crash while starting service
* Fixed: Compensated for Android changes, time-based triggers are now precise again
* Added: new action -> take screenshot
* Added: Location service (GPS) can be toggled between states if WRITE_SECURE_SETTINGS has been granted from a computer
* Added: triggerUrl action can now be used with POST and parameters