Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
27e9b3e0d1 | |||
a6c6dfc6ba | |||
6a7875cc61 | |||
6f80caa1c6 | |||
a9646cbf28 | |||
52edfa32df | |||
ca81e6a7bd | |||
49e4c20ab6 | |||
ab98b4d1db |
@ -11,8 +11,8 @@ android {
|
||||
compileSdkVersion 31
|
||||
buildToolsVersion '29.0.2'
|
||||
useLibrary 'org.apache.http.legacy'
|
||||
versionCode 123
|
||||
versionName "1.7.8"
|
||||
versionCode 126
|
||||
versionName "1.7.11"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
@ -36,7 +36,7 @@ android {
|
||||
{
|
||||
dimension "version"
|
||||
versionNameSuffix "-googlePlay"
|
||||
targetSdkVersion 30
|
||||
targetSdkVersion 31
|
||||
}
|
||||
|
||||
fdroidFlavor
|
||||
|
@ -347,7 +347,16 @@ public class Rule implements Comparable<Rule>
|
||||
if(oneTrigger.getTriggerType().equals(Trigger.Trigger_Enum.timeFrame))
|
||||
{
|
||||
if(oneTrigger.getTimeFrame().repetition > 0)
|
||||
return true;
|
||||
{
|
||||
if(this.getLastExecution() != null)
|
||||
{
|
||||
Calendar now = Calendar.getInstance();
|
||||
if (this.getLastExecution().getTimeInMillis() + oneTrigger.getTimeFrame().getRepetition() * 1000 <= now.getTimeInMillis())
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if(oneTrigger.getTriggerType().equals(Trigger.Trigger_Enum.broadcastReceived))
|
||||
{
|
||||
@ -467,7 +476,9 @@ public class Rule implements Comparable<Rule>
|
||||
{
|
||||
AutomationService service = AutomationService.getInstance();
|
||||
service.speak(messages[0], false);
|
||||
Toast.makeText(service, messages[0], Toast.LENGTH_LONG).show();
|
||||
|
||||
if(Settings.showToasts)
|
||||
Toast.makeText(service, messages[0], Toast.LENGTH_LONG).show();
|
||||
|
||||
super.onProgressUpdate(messages);
|
||||
}
|
||||
|
@ -440,7 +440,9 @@ public class Rule implements Comparable<Rule>
|
||||
{
|
||||
AutomationService service = AutomationService.getInstance();
|
||||
service.speak(messages[0], false);
|
||||
Toast.makeText(service, messages[0], Toast.LENGTH_LONG).show();
|
||||
|
||||
if(Settings.showToasts)
|
||||
Toast.makeText(service, messages[0], Toast.LENGTH_LONG).show();
|
||||
|
||||
super.onProgressUpdate(messages);
|
||||
}
|
||||
|
@ -111,6 +111,7 @@
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver android:name=".receivers.PackageReplacedReceiver"
|
||||
android:exported="true"
|
||||
android:enabled="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
|
||||
@ -122,6 +123,7 @@
|
||||
|
||||
<receiver
|
||||
android:name=".DeviceAdmin"
|
||||
android:exported="true"
|
||||
android:description="@string/app_name"
|
||||
android:label="@string/app_name"
|
||||
android:permission= "android.permission.BIND_DEVICE_ADMIN" >
|
||||
@ -160,6 +162,7 @@
|
||||
<activity android:name=".ActivityManageTriggerCheckVariable" />
|
||||
<activity
|
||||
android:name=".ActivityMainTabLayout"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTask">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
@ -208,6 +211,7 @@
|
||||
|
||||
<service
|
||||
android:name=".receivers.NotificationListener"
|
||||
android:exported="true"
|
||||
android:label="@string/app_name"
|
||||
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" >
|
||||
<intent-filter>
|
||||
|
@ -467,7 +467,9 @@ public class Rule implements Comparable<Rule>
|
||||
{
|
||||
AutomationService service = AutomationService.getInstance();
|
||||
service.speak(messages[0], false);
|
||||
Toast.makeText(service, messages[0], Toast.LENGTH_LONG).show();
|
||||
|
||||
if(Settings.showToasts)
|
||||
Toast.makeText(service, messages[0], Toast.LENGTH_LONG).show();
|
||||
|
||||
super.onProgressUpdate(messages);
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ public class ActivityManageActionSendBroadcast extends Activity
|
||||
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
|
||||
{
|
||||
if(supportedIntentTypes[arg2].equals("int") || supportedIntentTypes[arg2].equals("long") || supportedIntentTypes[arg2].equals("short"))
|
||||
ActivityManageActionSendBroadcast.this.etParameterValue.setInputType(InputType.TYPE_CLASS_NUMBER);
|
||||
ActivityManageActionSendBroadcast.this.etParameterValue.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
|
||||
else if(supportedIntentTypes[arg2].equals("double") || supportedIntentTypes[arg2].equals("float"))
|
||||
ActivityManageActionSendBroadcast.this.etParameterValue.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
|
||||
else
|
||||
|
@ -268,7 +268,7 @@ public class ActivityManageActionStartActivity extends Activity
|
||||
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
|
||||
{
|
||||
if(supportedIntentTypes[arg2].equals("int") || supportedIntentTypes[arg2].equals("long") || supportedIntentTypes[arg2].equals("short"))
|
||||
ActivityManageActionStartActivity.this.etParameterValue.setInputType(InputType.TYPE_CLASS_NUMBER);
|
||||
ActivityManageActionStartActivity.this.etParameterValue.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
|
||||
else if(supportedIntentTypes[arg2].equals("double") || supportedIntentTypes[arg2].equals("float"))
|
||||
ActivityManageActionStartActivity.this.etParameterValue.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
|
||||
else
|
||||
|
@ -34,6 +34,7 @@ import com.jens.automation2.receivers.PhoneStatusListener;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@ -41,6 +42,7 @@ import java.util.Set;
|
||||
public class AutomationService extends Service implements OnInitListener
|
||||
{
|
||||
protected TextToSpeech ttsEngine = null;
|
||||
protected int ttsStatus = -1;
|
||||
protected final static int notificationId = 1000;
|
||||
protected final static int notificationIdRestrictions = 1005;
|
||||
protected final static int notificationIdLocationRestriction = 1006;
|
||||
@ -97,6 +99,11 @@ public class AutomationService extends Service implements OnInitListener
|
||||
this.lockSoundChangesEnd = lockSoundChangesEnd;
|
||||
}
|
||||
|
||||
public int getTtsStatus()
|
||||
{
|
||||
return ttsStatus;
|
||||
}
|
||||
|
||||
protected final IBinder myBinder = new LocalBinder();
|
||||
|
||||
protected LocationProvider myLocationProvider;
|
||||
@ -226,7 +233,8 @@ public class AutomationService extends Service implements OnInitListener
|
||||
this.isRunning = true;
|
||||
|
||||
Miscellaneous.logEvent("i", "Service", this.getResources().getString(R.string.serviceStarted) + " VERSION_CODE: " + BuildConfig.VERSION_CODE + ", VERSION_NAME: " + BuildConfig.VERSION_NAME + ", flavor: " + BuildConfig.FLAVOR, 1);
|
||||
Toast.makeText(this, this.getResources().getString(R.string.serviceStarted), Toast.LENGTH_LONG).show();
|
||||
if(Settings.showToasts)
|
||||
Toast.makeText(this, this.getResources().getString(R.string.serviceStarted), Toast.LENGTH_LONG).show();
|
||||
|
||||
/*
|
||||
On normal phones the app is supposed to automatically restart in case of any problems.
|
||||
@ -306,7 +314,8 @@ public class AutomationService extends Service implements OnInitListener
|
||||
|
||||
stopRoutine();
|
||||
this.isRunning = false;
|
||||
Toast.makeText(this, getResources().getString(R.string.serviceStopped), Toast.LENGTH_LONG).show();
|
||||
if(Settings.showToasts)
|
||||
Toast.makeText(this, getResources().getString(R.string.serviceStopped), Toast.LENGTH_LONG).show();
|
||||
Miscellaneous.logEvent("i", "Service", getResources().getString(R.string.serviceStopped), 1);
|
||||
}
|
||||
|
||||
@ -315,8 +324,26 @@ public class AutomationService extends Service implements OnInitListener
|
||||
if (Settings.useTextToSpeechOnNormal || Settings.useTextToSpeechOnSilent || Settings.useTextToSpeechOnVibrate || Rule.isAnyRuleUsing(Action.Action_Enum.speakText))
|
||||
{
|
||||
if (ttsEngine == null)
|
||||
ttsEngine = new TextToSpeech(this, this);
|
||||
} else
|
||||
{
|
||||
ttsEngine = new TextToSpeech(this, new TextToSpeech.OnInitListener()
|
||||
{
|
||||
@Override
|
||||
public void onInit(int status)
|
||||
{
|
||||
ttsStatus = status;
|
||||
|
||||
if (status == TextToSpeech.SUCCESS)
|
||||
{
|
||||
ttsEngine.setLanguage(Locale.getDefault());
|
||||
Miscellaneous.logEvent("i", "TTS engine", "TTS engine available.", 3);
|
||||
}
|
||||
else
|
||||
Miscellaneous.logEvent("i", "TTS engine", "TTS engine not available. Status: " + String.valueOf(status), 3);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ttsEngine != null)
|
||||
ttsEngine.shutdown();
|
||||
@ -671,25 +698,26 @@ public class AutomationService extends Service implements OnInitListener
|
||||
{
|
||||
try
|
||||
{
|
||||
for(int i = 0; i < 5; i++)
|
||||
for(int i = 0; i < 60; i++)
|
||||
{
|
||||
if(ttsEngine != null)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
if(ttsEngine == null || ttsStatus != TextToSpeech.SUCCESS)
|
||||
{
|
||||
try
|
||||
{
|
||||
Miscellaneous.logEvent("i", "TTS", "Waiting for a moment to give the TTS service time to load...", 4);
|
||||
Thread.sleep(1000); // give the tts engine time to load
|
||||
Thread.sleep(500); // give the tts engine time to load
|
||||
}
|
||||
catch(Exception e)
|
||||
{}
|
||||
}
|
||||
else
|
||||
{
|
||||
Miscellaneous.logEvent("i", "TextToSpeech", "Speaking \"" + text + "\" in language " + ttsEngine.getLanguage().toLanguageTag(), 3);
|
||||
this.ttsEngine.speak(text, TextToSpeech.QUEUE_ADD, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
Miscellaneous.logEvent("i", "TextToSpeech", "Speaking " + text + " in language " + ttsEngine.getLanguage().toLanguageTag(), 3);
|
||||
this.ttsEngine.speak(text, TextToSpeech.QUEUE_ADD, null);
|
||||
Miscellaneous.logEvent("i", "TextToSpeech", "TTS engine not available after waiting 30 seconds, yet. Aborting.", 3);
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
|
@ -111,6 +111,8 @@ import androidx.documentfile.provider.DocumentFile;
|
||||
public class Miscellaneous extends Service
|
||||
{
|
||||
protected static String writeableFolderStringCache = null;
|
||||
public static Context startupContext;
|
||||
|
||||
public static final String lineSeparator = System.getProperty("line.separator");
|
||||
|
||||
public static String downloadURL(String url, String username, String password)
|
||||
@ -273,7 +275,7 @@ public class Miscellaneous extends Service
|
||||
{
|
||||
writeToLogFile(type, header, description);
|
||||
|
||||
if(!logCleanerRunning && Math.random() < 0.1) // tidy up with 10% probability
|
||||
if (!logCleanerRunning && Math.random() < 0.1) // tidy up with 10% probability
|
||||
{
|
||||
rotateLogFile(getLogFile());
|
||||
}
|
||||
@ -557,7 +559,10 @@ public class Miscellaneous extends Service
|
||||
returnContext = ActivityPermissions.getInstance().getApplicationContext();
|
||||
if(returnContext != null)
|
||||
return returnContext;
|
||||
|
||||
|
||||
if(startupContext != null)
|
||||
return startupContext;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -421,14 +421,18 @@ public class PointOfInterest implements Comparable<PointOfInterest>
|
||||
public boolean create(Context context)
|
||||
{
|
||||
for(PointOfInterest poi : PointOfInterest.pointOfInterestCollection)
|
||||
if(poi.getName().equals(this.getName()))
|
||||
{
|
||||
if (poi.getName().equals(this.getName()))
|
||||
{
|
||||
Toast.makeText(context, context.getResources().getString(R.string.anotherPoiByThatName), Toast.LENGTH_LONG).show();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(plausibilityCheck())
|
||||
{
|
||||
Miscellaneous.logEvent("i", "Creating POI", this.toStringLong(), 3);
|
||||
|
||||
PointOfInterest.pointOfInterestCollection.add(this);
|
||||
PointOfInterest.writePoisToFile();
|
||||
|
||||
@ -490,8 +494,10 @@ public class PointOfInterest implements Comparable<PointOfInterest>
|
||||
Check for change of rule name END
|
||||
*/
|
||||
|
||||
if (plausibilityCheck())
|
||||
if(plausibilityCheck())
|
||||
{
|
||||
Miscellaneous.logEvent("i", "Changing POI", "Old name: " + this.oldName + ", new data: " + this.toStringLong(), 3);
|
||||
|
||||
if(PointOfInterest.writePoisToFile())
|
||||
{
|
||||
AutomationService service = AutomationService.getInstance();
|
||||
|
@ -65,6 +65,7 @@ public class Settings implements SharedPreferences
|
||||
public static int tabsPlacement;
|
||||
public static boolean executeRulesAndProfilesWithSingleClick;
|
||||
public static boolean displayNewsOnMainScreen;
|
||||
public static boolean showToasts;
|
||||
public static boolean automaticUpdateCheck;
|
||||
public static long musicCheckFrequency;
|
||||
|
||||
@ -130,6 +131,8 @@ public class Settings implements SharedPreferences
|
||||
public static final int default_tabsPlacement = 0;
|
||||
public static final boolean default_executeRulesAndProfilesWithSingleClick = false;
|
||||
public static final boolean default_displayNewsOnMainScreen = false;
|
||||
|
||||
public static final boolean default_showToasts = true;
|
||||
public static final boolean default_automaticUpdateCheck = false;
|
||||
public static final boolean default_lockSoundChanges = false;
|
||||
public static final long default_lastNewsPolltime = -1;
|
||||
@ -277,6 +280,7 @@ public class Settings implements SharedPreferences
|
||||
executeRulesAndProfilesWithSingleClick = prefs.getBoolean("executeRulesAndProfilesWithSingleClick", default_executeRulesAndProfilesWithSingleClick);
|
||||
automaticUpdateCheck = prefs.getBoolean("automaticUpdateCheck", default_automaticUpdateCheck);
|
||||
displayNewsOnMainScreen = prefs.getBoolean("displayNewsOnMainScreen", default_displayNewsOnMainScreen);
|
||||
showToasts = prefs.getBoolean("showToasts", default_showToasts);
|
||||
|
||||
lockSoundChanges = prefs.getBoolean("lockSoundChanges", default_lockSoundChanges);
|
||||
noticeAndroid9MicrophoneShown = prefs.getBoolean("noticeAndroid9MicrophoneShown", false);
|
||||
@ -472,6 +476,9 @@ public class Settings implements SharedPreferences
|
||||
if(!prefs.contains("displayNewsOnMainScreen") || force)
|
||||
editor.putBoolean("displayNewsOnMainScreen", default_displayNewsOnMainScreen);
|
||||
|
||||
if(!prefs.contains("showToasts") || force)
|
||||
editor.putBoolean("showToasts", default_showToasts);
|
||||
|
||||
if(!prefs.contains("musicCheckFrequency") || force)
|
||||
editor.putLong("musicCheckFrequency", default_musicCheckFrequency);
|
||||
|
||||
@ -555,6 +562,7 @@ public class Settings implements SharedPreferences
|
||||
editor.putBoolean("executeRulesAndProfilesWithSingleClick", executeRulesAndProfilesWithSingleClick);
|
||||
editor.putBoolean("automaticUpdateCheck", automaticUpdateCheck);
|
||||
editor.putBoolean("displayNewsOnMainScreen", displayNewsOnMainScreen);
|
||||
editor.putBoolean("showToasts", showToasts);
|
||||
|
||||
if(Settings.musicCheckFrequency == 0)
|
||||
Settings.musicCheckFrequency = Settings.default_musicCheckFrequency;
|
||||
|
@ -11,12 +11,13 @@ import com.jens.automation2.Settings;
|
||||
|
||||
public class StartupIntentReceiver extends BroadcastReceiver
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent)
|
||||
{
|
||||
Settings.readFromPersistentStorage(context);
|
||||
|
||||
Miscellaneous.startupContext = context;
|
||||
|
||||
// Miscellaneous.logEvent("i", "Boot event", "Received event: " + intent.getAction(), 5);
|
||||
|
||||
if(Settings.startServiceAtSystemBoot)
|
||||
|
@ -74,7 +74,12 @@
|
||||
android:title="@string/displayNewsOnMainScreen"
|
||||
android:summary="@string/displayNewsOnMainScreenDescription" />
|
||||
|
||||
</PreferenceCategory>
|
||||
<CheckBoxPreference
|
||||
android:key="showToasts"
|
||||
android:title="@string/showToastsForEvents"
|
||||
android:summary="@string/showToastsForEventsSummary" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:summary="@string/soundSettings"
|
||||
|
@ -771,4 +771,12 @@
|
||||
<string name="checkVariableExplanation">Wenn Sie den Wert der Variablen leer lassen, darf sie nicht gesetzt sein, damit die Bedingung als erfüllt gilt.</string>
|
||||
<string name="variableCheckString">wenn Variable %1$s den Wert %2$s hat</string>
|
||||
<string name="variableCheckStringDeleted">wenn Variable %1$s nicht gesetzt ist</string>
|
||||
<string name="messageType">Nachrichtentyp</string>
|
||||
<string name="sms">SMS</string>
|
||||
<string name="mms">MMS</string>
|
||||
<string name="attachment">Dateianhang</string>
|
||||
<string name="chooseFile">Datei wählen</string>
|
||||
<string name="startAppByStartService">via startService()</string>
|
||||
<string name="showToastsForEvents">Toasts anzeigen</string>
|
||||
<string name="showToastsForEventsSummary">Popups anzeigen, wenn Ereignisse wie Regelausführungen auftreten</string>
|
||||
</resources>
|
@ -770,4 +770,12 @@
|
||||
<string name="VariableKey">Clave variable</string>
|
||||
<string name="deleteVariable">Eliminar variable</string>
|
||||
<string name="setVariable">Establecer una variable</string>
|
||||
<string name="messageType">Tipo de mensaje</string>
|
||||
<string name="sms">SMS</string>
|
||||
<string name="mms">MMS</string>
|
||||
<string name="attachment">Archivo adjunto</string>
|
||||
<string name="chooseFile">elegir archivo</string>
|
||||
<string name="startAppByStartService">via startService()</string>
|
||||
<string name="showToastsForEvents">Mostrar toasts</string>
|
||||
<string name="showToastsForEventsSummary">Mostrar notificaciones del sistema cuando se producen eventos como ejecuciones de reglas</string>
|
||||
</resources>
|
@ -117,7 +117,7 @@
|
||||
<string name="helpTextTimeFrame">Si vous créez une règle avec une période d’éxécution vous avez deux options. Vous pouvez choisir d’éxécuter dans la période OU hors de la période. Quel que soit votre choix l’action ne sera déclenchée qu’une seule fois. Si vous créez une règle avec pour déclencheur \« dans la période xyz \» qui modifie votre profil audio en le passant en mode vibreur cela ne signifie pas que votre téléphone repassera automatiquement en mode sonnerie à la fin de la période. Si vous souhaitez le faire vous devez définir une autre règle avec une autre période.</string>
|
||||
<string name="helpTextSound">Sur l’écran principal vous pouvez utiliser le verrouillage des modifications audio pour temporairement ne pas utiliser les règles de changement des paramètres audio. Par exemple vous pouvez êtes dans un lieu où à un moment où les sonneries peuvent être dérangeantes. Cette fonctionnalité se désactivera automatiquement une fois le temps configuré écoulé. Appuyez sur le bouton + 15 min pour ajouter la durée souhaitée. Une fois activé vous pouvez le désactiver en appuyant sur le bouton \« OUI \» (la règle de gestion des paramètres audio sera de nouveau active).</string>
|
||||
<string name="toggableRules">Inverser la règle</string>
|
||||
<string name="helpTextToggable">Les règles ont une option appelée \« Inversion \». Si une règle est exécutée et que les mêmes déclencheurs s’appliquent à nouveau, la règle sera exécutée dans le sens opposé. Pour l’instant, cela n’est possible qu'avec les étiquettes NFC : si vous les touchez deux fois et que l’option est activée, cela fera l’inverse des actions demandées. Par exemple désactiver le wifi s’il est actuellement actif.</string>
|
||||
<string name="helpTextToggable">Les règles ont une option appelée \« Inversion \». Si une règle est exécutée et que les mêmes déclencheurs s’appliquent à nouveau, la règle sera exécutée dans le sens opposé. Pour l’instant, cela n’est possible qu\'avec les étiquettes NFC : si vous les touchez deux fois et que l’option est activée, cela fera l’inverse des actions demandées. Par exemple désactiver le wifi s’il est actuellement actif.</string>
|
||||
<string name="helpTextProcessMonitoring">Si vous spécifiez une règle avec une surveillance de processus, l’application vérifira ce processus toutes les x secondes (vous pouvez modifier cette variable dans les réglages). Cela peut être un peu lent, mais un contrôle continu viderait la batterie trop vite, et il n’y a pas de transmission de l’OS pour cet événement.</string>
|
||||
<string name="helpTitleEnergySaving">Économie d’énergie</string>
|
||||
<string name="helpTextEnergySaving">Beaucoup de marques d’appareils Android essaient d’économiser en limitant les activités des applications en arrière-plan. Malheureusement cela signifie souvent ques ces applications ne fonctionnent pas correctement, Automation en fait partie. Consultez cette <a href="https://dontkillmyapp.com/">page web</a> pour savoir comment exclure Automation de ces restrictions.</string>
|
||||
@ -274,6 +274,7 @@
|
||||
<string name="with">avec</string>
|
||||
<string name="phoneNumber">Numéro de téléphone</string>
|
||||
<string name="enterPhoneNumberBlankForAny">Saisissez un numéro de téléphone. Laissez vide pour n’importe quel numéro.</string>
|
||||
<string name="enterPhoneNumber">Entrez le numéro de téléphone.</string>
|
||||
<string name="phoneDirection">Sélectionnez le type \nd’appel</string>
|
||||
<string name="any">tout</string>
|
||||
<string name="incoming">entrant</string>
|
||||
@ -769,4 +770,12 @@
|
||||
<string name="VariableKey">Clé variable</string>
|
||||
<string name="deleteVariable">Supprimer la variable</string>
|
||||
<string name="setVariable">Définir une variable</string>
|
||||
<string name="messageType">Type de message</string>
|
||||
<string name="sms">SMS</string>
|
||||
<string name="mms">MMS</string>
|
||||
<string name="attachment">Attachement</string>
|
||||
<string name="chooseFile">Choisissez un fichier</string>
|
||||
<string name="startAppByStartService">via startService()</string>
|
||||
<string name="showToastsForEvents">Afficher les toasts</string>
|
||||
<string name="showToastsForEventsSummary">Afficher les toasts lorsque des événements tels que des exécutions de règles se produisent</string>
|
||||
</resources>
|
||||
|
@ -771,4 +771,12 @@
|
||||
<string name="checkVariableExplanation">Se si lascia vuoto il valore, la variabile non deve essere impostata affinché la condizione restituisca true.</string>
|
||||
<string name="variableCheckString">Se la variabile %1$s è %2$s</string>
|
||||
<string name="variableCheckStringDeleted">Se la variabile %1$s non è impostata</string>
|
||||
<string name="messageType">Tipo di messaggio</string>
|
||||
<string name="sms">SMS</string>
|
||||
<string name="mms">MMS</string>
|
||||
<string name="attachment">Allegato</string>
|
||||
<string name="chooseFile">Scegli file</string>
|
||||
<string name="startAppByStartService">tramite startService()</string>
|
||||
<string name="showToastsForEvents">Mostra toast</string>
|
||||
<string name="showToastsForEventsSummary">Mostrare gli avvisi popup quando si verificano eventi come le esecuzioni di regole</string>
|
||||
</resources>
|
||||
|
@ -769,5 +769,13 @@
|
||||
<string name="checkVariableExplanation">Als u de waarde leeg laat, mag de variabele niet worden ingesteld om de voorwaarde true te laten retourneren.</string>
|
||||
<string name="variableCheckString">als variabele %1$s %2$s is</string>
|
||||
<string name="variableCheckStringDeleted">als variabele %1$s niet is ingesteld</string>
|
||||
<string name="messageType">Type bericht</string>
|
||||
<string name="sms">SMS</string>
|
||||
<string name="mms">MMS</string>
|
||||
<string name="attachment">Bijlage</string>
|
||||
<string name="chooseFile">kies bestand</string>
|
||||
<string name="startAppByStartService">via startService()</string>
|
||||
<string name="showToastsForEvents">Toon toasts</string>
|
||||
<string name="showToastsForEventsSummary">Pop-ups weergeven wanneer gebeurtenissen zoals regeluitvoeringen plaatsvinden</string>
|
||||
|
||||
</resources>
|
||||
|
@ -828,4 +828,12 @@
|
||||
<string name="checkVariableExplanation">Если оставить значение пустым, переменная не должна быть задана для того, чтобы условие возвращало значение true.</string>
|
||||
<string name="variableCheckString">если переменная %1$s равно %2$s</string>
|
||||
<string name="variableCheckStringDeleted">Если переменная %1$s не задана</string>
|
||||
<string name="messageType">Тип сообщения</string>
|
||||
<string name="sms">SMS</string>
|
||||
<string name="mms">MMS</string>
|
||||
<string name="attachment">Прикрепление</string>
|
||||
<string name="chooseFile">выберите файл</string>
|
||||
<string name="startAppByStartService">дорога startService()</string>
|
||||
<string name="showToastsForEvents">Показать тосты</string>
|
||||
<string name="showToastsForEventsSummary">Отображение всплывающих уведомлений при таких событиях, как выполнение правил</string>
|
||||
</resources>
|
||||
|
@ -874,4 +874,6 @@
|
||||
<string name="attachment">Attachment</string>
|
||||
<string name="chooseFile">choose file</string>
|
||||
<string name="startAppByStartService">by startService()</string>
|
||||
<string name="showToastsForEvents">Show toasts</string>
|
||||
<string name="showToastsForEventsSummary">Show toasts when events like rule executions occur</string>
|
||||
</resources>
|
4
fastlane/metadata/android/de-DE/changelogs/125.txt
Normal file
4
fastlane/metadata/android/de-DE/changelogs/125.txt
Normal file
@ -0,0 +1,4 @@
|
||||
* Behoben: Negative Ganzzahlen werden als Intent-Parameter akzeptiert
|
||||
* Behoben: Mehrere parallele Zeiträume mit Wiederholung konnten dazu führen, daß alle zu häufig ausgeführt wurden
|
||||
* Behoben: Automatischer Start der Anwendung beim Gerätestart konnte in manchen Fällen scheitern
|
||||
* Übersetzungen aktualisiert
|
2
fastlane/metadata/android/de-DE/changelogs/126.txt
Normal file
2
fastlane/metadata/android/de-DE/changelogs/126.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Behoben: Sprachausgabe hat nicht immer funktioniert, vor allem beim Programmstart
|
||||
* Neu: Möglichkeit Toasts zu deaktivieren, z.B. für Regel-Aktivierungen
|
4
fastlane/metadata/android/en-US/changelogs/125.txt
Normal file
4
fastlane/metadata/android/en-US/changelogs/125.txt
Normal file
@ -0,0 +1,4 @@
|
||||
* Fixed: Now allowing negative integers as intent data
|
||||
* Fixed: Multiple time frames with reoccurrence configured would trigger to early executions
|
||||
* Fixed: Automatic app start at boot might fail in some cases
|
||||
* Translations updated
|
2
fastlane/metadata/android/en-US/changelogs/126.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/126.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Fixed: TTS engine wouldn't always speak, especially at the startup of the app
|
||||
* Added: Possibility to disable toasts for e.g. announcing rule activations
|
4
fastlane/metadata/android/es-ES/changelogs/125.txt
Normal file
4
fastlane/metadata/android/es-ES/changelogs/125.txt
Normal file
@ -0,0 +1,4 @@
|
||||
* Corregido: Ahora permite enteros negativos como datos de intención
|
||||
* Corregido: Múltiples marcos de tiempo con la repetición configurada se desencadenarían en ejecuciones tempranas
|
||||
* Corregido: el inicio automático de la aplicación en el arranque puede fallar en algunos casos
|
||||
* Traducciones actualizadas
|
2
fastlane/metadata/android/es-ES/changelogs/126.txt
Normal file
2
fastlane/metadata/android/es-ES/changelogs/126.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Corregido: el motor TTS no siempre hablaba, especialmente al inicio de la aplicación
|
||||
* Añadido: Posibilidad de desactivar las notificaciones del sistema para, por ejemplo, anunciar activaciones de reglas
|
4
fastlane/metadata/android/fr-FR/changelogs/125.txt
Normal file
4
fastlane/metadata/android/fr-FR/changelogs/125.txt
Normal file
@ -0,0 +1,4 @@
|
||||
* Correction : Autorise désormais les entiers négatifs comme données d'intention
|
||||
* Correction : Plusieurs délais avec récurrence configurée déclenchaient des exécutions anticipées
|
||||
* Correction : le démarrage automatique de l'application au démarrage peut échouer dans certains cas
|
||||
* Traductions mises à jour
|
2
fastlane/metadata/android/fr-FR/changelogs/126.txt
Normal file
2
fastlane/metadata/android/fr-FR/changelogs/126.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Correction : le moteur TTS ne parlait pas toujours, surtout au démarrage de l'application
|
||||
* Ajouté: Possibilité de désactiver les toasts pour, par exemple, annoncer les activations de règles
|
4
fastlane/metadata/android/it-IT/changelogs/125.txt
Normal file
4
fastlane/metadata/android/it-IT/changelogs/125.txt
Normal file
@ -0,0 +1,4 @@
|
||||
* Risolto: ora consente numeri interi negativi come dati di intento
|
||||
* Risolto: più intervalli di tempo con ripetizione configurata si attiverebbero per le esecuzioni anticipate
|
||||
* Risolto: l'avvio automatico dell'app all'avvio potrebbe non riuscire in alcuni casi
|
||||
* Traduzioni aggiornate
|
2
fastlane/metadata/android/it-IT/changelogs/126.txt
Normal file
2
fastlane/metadata/android/it-IT/changelogs/126.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Risolto: il motore TTS non parlava sempre, specialmente all'avvio dell'app
|
||||
* Aggiunto: Possibilità di disabilitare gli avvisi popup ad esempio per annunciare l'attivazione delle regole
|
4
fastlane/metadata/android/nl-NL/changelogs/125.txt
Normal file
4
fastlane/metadata/android/nl-NL/changelogs/125.txt
Normal file
@ -0,0 +1,4 @@
|
||||
* Opgelost: nu negatieve gehele getallen toestaan als intentiegegevens
|
||||
* Opgelost: Meerdere tijdframes met reoccurence geconfigureerd zouden leiden tot vroege uitvoeringen
|
||||
* Opgelost: Automatische app-start bij het opstarten kan in sommige gevallen mislukken
|
||||
* Vertalingen bijgewerkt
|
2
fastlane/metadata/android/nl-NL/changelogs/126.txt
Normal file
2
fastlane/metadata/android/nl-NL/changelogs/126.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Opgelost: TTS-engine zou niet altijd spreken, vooral bij het opstarten van de app
|
||||
* Toegevoegd: Mogelijkheid om toasts uit te schakelen voor bijvoorbeeld het aankondigen van regelactiveringen
|
4
fastlane/metadata/android/ru-RU/changelogs/125.txt
Normal file
4
fastlane/metadata/android/ru-RU/changelogs/125.txt
Normal file
@ -0,0 +1,4 @@
|
||||
* Исправлено: Добавлено разрешение отрицательных целых чисел в качестве данных о намерениях
|
||||
* Исправлено: Несколько таймфреймов с настроенным повторением запускали бы ранние выполнения
|
||||
* Исправлено: Автоматический запуск приложения при загрузке может завершиться сбоем в некоторых случаях
|
||||
* Переводы обновлены
|
2
fastlane/metadata/android/ru-RU/changelogs/126.txt
Normal file
2
fastlane/metadata/android/ru-RU/changelogs/126.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Исправлено: движок TTS не всегда говорил, особенно при запуске приложения
|
||||
* Добавлено: Возможность отключения всплывающих уведомлений, например, для объявления активации правил
|
Reference in New Issue
Block a user