1 Commits

Author SHA1 Message Date
0368b2a8c8 v118 2022-03-13 16:06:10 +01:00
22 changed files with 189 additions and 245 deletions

View File

@ -11,8 +11,8 @@
"type": "SINGLE", "type": "SINGLE",
"filters": [], "filters": [],
"attributes": [], "attributes": [],
"versionCode": 116, "versionCode": 118,
"versionName": "1.7.2-googlePlay", "versionName": "1.7.4-googlePlay",
"outputFile": "app-googlePlayFlavor-release.apk" "outputFile": "app-googlePlayFlavor-release.apk"
} }
], ],

View File

@ -372,8 +372,7 @@ public class Rule implements Comparable<Rule>
if (!oneTrigger.applies(null, context)) if (!oneTrigger.applies(null, context))
return false; return false;
} }
Miscellaneous.logEvent("i", String.format(context.getResources().getString(R.string.ruleCheckOf), this.getName()), String.format("Rule %1$s generally applies currently. Checking if it's really due, yet will be done separately.", this.getName()), 3);
return true; return true;
} }

View File

@ -21,109 +21,108 @@ public class Action
public static final String intentPairSeparator = "intPairSplit"; public static final String intentPairSeparator = "intPairSplit";
public static final String vibrateSeparator = ","; public static final String vibrateSeparator = ",";
public enum Action_Enum public enum Action_Enum {
{ setWifi,
setWifi, setBluetooth,
setBluetooth, setUsbTethering,
setUsbTethering, setWifiTethering,
setWifiTethering, setBluetoothTethering,
setBluetoothTethering, setDisplayRotation,
setDisplayRotation, turnWifiOn,turnWifiOff,
turnWifiOn,turnWifiOff, turnBluetoothOn,turnBluetoothOff,
turnBluetoothOn,turnBluetoothOff, triggerUrl,
triggerUrl, changeSoundProfile,
changeSoundProfile, turnUsbTetheringOn,turnUsbTetheringOff,
turnUsbTetheringOn,turnUsbTetheringOff, turnWifiTetheringOn,turnWifiTetheringOff,
turnWifiTetheringOn,turnWifiTetheringOff, enableScreenRotation,disableScreenRotation,
enableScreenRotation,disableScreenRotation, startOtherActivity,
startOtherActivity, waitBeforeNextAction,
waitBeforeNextAction, turnScreenOnOrOff,
turnScreenOnOrOff, setAirplaneMode,
setAirplaneMode, setDataConnection,
setDataConnection, speakText,
speakText, playMusic,
playMusic, controlMediaPlayback,
controlMediaPlayback, setScreenBrightness,
setScreenBrightness, playSound,
playSound, vibrate,
vibrate, createNotification,
createNotification, closeNotification,
closeNotification, sendTextMessage;
sendTextMessage;
public String getFullName(Context context)
public String getFullName(Context context) {
{ switch(this)
switch(this) {
{ case setWifi:
case setWifi: return context.getResources().getString(R.string.actionSetWifi);
return context.getResources().getString(R.string.actionSetWifi); case setBluetooth:
case setBluetooth: return context.getResources().getString(R.string.actionSetBluetooth);
return context.getResources().getString(R.string.actionSetBluetooth); case setWifiTethering:
case setWifiTethering: return context.getResources().getString(R.string.actionSetWifiTethering);
return context.getResources().getString(R.string.actionSetWifiTethering); case setBluetoothTethering:
case setBluetoothTethering: return context.getResources().getString(R.string.actionSetBluetoothTethering);
return context.getResources().getString(R.string.actionSetBluetoothTethering); case setUsbTethering:
case setUsbTethering: return context.getResources().getString(R.string.actionSetUsbTethering);
return context.getResources().getString(R.string.actionSetUsbTethering); case setDisplayRotation:
case setDisplayRotation: return context.getResources().getString(R.string.actionSetDisplayRotation);
return context.getResources().getString(R.string.actionSetDisplayRotation); case turnWifiOn:
case turnWifiOn: return context.getResources().getString(R.string.actionTurnWifiOn);
return context.getResources().getString(R.string.actionTurnWifiOn); case turnWifiOff:
case turnWifiOff: return context.getResources().getString(R.string.actionTurnWifiOff);
return context.getResources().getString(R.string.actionTurnWifiOff); case turnBluetoothOn:
case turnBluetoothOn: return context.getResources().getString(R.string.actionTurnBluetoothOn);
return context.getResources().getString(R.string.actionTurnBluetoothOn); case turnBluetoothOff:
case turnBluetoothOff: return context.getResources().getString(R.string.actionTurnBluetoothOff);
return context.getResources().getString(R.string.actionTurnBluetoothOff); case triggerUrl:
case triggerUrl: return context.getResources().getString(R.string.actionTriggerUrl);
return context.getResources().getString(R.string.actionTriggerUrl); case changeSoundProfile:
case changeSoundProfile: return context.getResources().getString(R.string.actionChangeSoundProfile);
return context.getResources().getString(R.string.actionChangeSoundProfile); case turnUsbTetheringOn:
case turnUsbTetheringOn: return context.getResources().getString(R.string.actionTurnUsbTetheringOn);
return context.getResources().getString(R.string.actionTurnUsbTetheringOn); case turnUsbTetheringOff:
case turnUsbTetheringOff: return context.getResources().getString(R.string.actionTurnUsbTetheringOff);
return context.getResources().getString(R.string.actionTurnUsbTetheringOff); case turnWifiTetheringOn:
case turnWifiTetheringOn: return context.getResources().getString(R.string.actionTurnWifiTetheringOn);
return context.getResources().getString(R.string.actionTurnWifiTetheringOn); case turnWifiTetheringOff:
case turnWifiTetheringOff: return context.getResources().getString(R.string.actionTurnWifiTetheringOff);
return context.getResources().getString(R.string.actionTurnWifiTetheringOff); case enableScreenRotation:
case enableScreenRotation: return context.getResources().getString(R.string.actionEnableScreenRotation);
return context.getResources().getString(R.string.actionEnableScreenRotation); case disableScreenRotation:
case disableScreenRotation: return context.getResources().getString(R.string.actionDisableScreenRotation);
return context.getResources().getString(R.string.actionDisableScreenRotation); case startOtherActivity:
case startOtherActivity: return context.getResources().getString(R.string.startOtherActivity);
return context.getResources().getString(R.string.startOtherActivity); case waitBeforeNextAction:
case waitBeforeNextAction: return context.getResources().getString(R.string.waitBeforeNextAction);
return context.getResources().getString(R.string.waitBeforeNextAction); case turnScreenOnOrOff:
case turnScreenOnOrOff: return context.getResources().getString(R.string.turnScreenOnOrOff);
return context.getResources().getString(R.string.turnScreenOnOrOff); case vibrate:
case vibrate: return context.getResources().getString(R.string.vibrate);
return context.getResources().getString(R.string.vibrate); case setAirplaneMode:
case setAirplaneMode: return context.getResources().getString(R.string.airplaneMode);
return context.getResources().getString(R.string.airplaneMode); case setDataConnection:
case setDataConnection: return context.getResources().getString(R.string.actionDataConnection);
return context.getResources().getString(R.string.actionDataConnection); case speakText:
case speakText: return context.getResources().getString(R.string.actionSpeakText);
return context.getResources().getString(R.string.actionSpeakText); case playMusic:
case playMusic: return context.getResources().getString(R.string.actionPlayMusic);
return context.getResources().getString(R.string.actionPlayMusic); case controlMediaPlayback:
case controlMediaPlayback: return context.getResources().getString(R.string.actionMediaControl);
return context.getResources().getString(R.string.actionMediaControl); case playSound:
case playSound: return context.getResources().getString(R.string.playSound);
return context.getResources().getString(R.string.playSound); case sendTextMessage:
case sendTextMessage: return context.getResources().getString(R.string.sendTextMessage);
return context.getResources().getString(R.string.sendTextMessage); case setScreenBrightness:
case setScreenBrightness: return context.getResources().getString(R.string.setScreenBrightness);
return context.getResources().getString(R.string.setScreenBrightness); case createNotification:
case createNotification: return context.getResources().getString(R.string.createNotification);
return context.getResources().getString(R.string.createNotification); case closeNotification:
case closeNotification: return context.getResources().getString(R.string.closeNotifications);
return context.getResources().getString(R.string.closeNotifications); default:
default: return "Unknown";
return "Unknown"; }
} }
} };
};
private Action_Enum action; private Action_Enum action;
private boolean parameter1 = false; private boolean parameter1 = false;

View File

@ -529,10 +529,6 @@ public class ActivityManageRule extends Activity
items.add(new Item(typesLong[i].toString(), R.drawable.sound)); items.add(new Item(typesLong[i].toString(), R.drawable.sound));
else if(types[i].toString().equals(Trigger_Enum.screenState.toString())) else if(types[i].toString().equals(Trigger_Enum.screenState.toString()))
items.add(new Item(typesLong[i].toString(), R.drawable.smartphone)); items.add(new Item(typesLong[i].toString(), R.drawable.smartphone));
else if(types[i].toString().equals(Trigger_Enum.deviceStarts.toString()))
items.add(new Item(typesLong[i].toString(), R.drawable.alarm));
else if(types[i].toString().equals(Trigger_Enum.serviceStarts.toString()))
items.add(new Item(typesLong[i].toString(), R.drawable.alarm));
else else
items.add(new Item(typesLong[i].toString(), R.drawable.placeholder)); items.add(new Item(typesLong[i].toString(), R.drawable.placeholder));
} }
@ -597,7 +593,7 @@ public class ActivityManageRule extends Activity
booleanChoices = new String[]{getResources().getString(R.string.started), getResources().getString(R.string.stopped)}; booleanChoices = new String[]{getResources().getString(R.string.started), getResources().getString(R.string.stopped)};
else if(triggerType == Trigger_Enum.usb_host_connection) else if(triggerType == Trigger_Enum.usb_host_connection)
booleanChoices = new String[]{getResources().getString(R.string.connected), getResources().getString(R.string.disconnected)}; booleanChoices = new String[]{getResources().getString(R.string.connected), getResources().getString(R.string.disconnected)};
else if(triggerType == Trigger_Enum.speed || triggerType == Trigger_Enum.noiseLevel || triggerType == Trigger_Enum.batteryLevel) else if(triggerType == Trigger_Enum.speed | triggerType == Trigger_Enum.noiseLevel | triggerType == Trigger_Enum.batteryLevel)
booleanChoices = new String[]{getResources().getString(R.string.exceeds), getResources().getString(R.string.dropsBelow)}; booleanChoices = new String[]{getResources().getString(R.string.exceeds), getResources().getString(R.string.dropsBelow)};
else if(triggerType == Trigger_Enum.wifiConnection) else if(triggerType == Trigger_Enum.wifiConnection)
{ {
@ -702,20 +698,6 @@ public class ActivityManageRule extends Activity
getTriggerScreenStateDialog().show(); getTriggerScreenStateDialog().show();
return; return;
} }
else if(triggerType == Trigger_Enum.deviceStarts)
{
newTrigger.setTriggerType(Trigger_Enum.deviceStarts);
ruleToEdit.getTriggerSet().add(newTrigger);
refreshTriggerList();
return;
}
else if(triggerType == Trigger_Enum.serviceStarts)
{
newTrigger.setTriggerType(Trigger_Enum.serviceStarts);
ruleToEdit.getTriggerSet().add(newTrigger);
refreshTriggerList();
return;
}
else if(triggerType == Trigger_Enum.headsetPlugged) else if(triggerType == Trigger_Enum.headsetPlugged)
booleanChoices = new String[]{getResources().getString(R.string.connected), getResources().getString(R.string.disconnected)}; booleanChoices = new String[]{getResources().getString(R.string.connected), getResources().getString(R.string.disconnected)};

View File

@ -32,7 +32,6 @@ import com.jens.automation2.receivers.PackageReplacedReceiver;
import com.jens.automation2.receivers.PhoneStatusListener; import com.jens.automation2.receivers.PhoneStatusListener;
import java.util.Calendar; import java.util.Calendar;
import java.util.Set;
@SuppressLint("NewApi") @SuppressLint("NewApi")
public class AutomationService extends Service implements OnInitListener public class AutomationService extends Service implements OnInitListener
@ -193,9 +192,6 @@ public class AutomationService extends Service implements OnInitListener
{ {
Bundle b = intent.getExtras(); Bundle b = intent.getExtras();
startAtBoot = b.getBoolean("startAtBoot", false); startAtBoot = b.getBoolean("startAtBoot", false);
if(startAtBoot)
Settings.deviceStartDone = false;
} }
if (checkStartupRequirements(this, startAtBoot)) if (checkStartupRequirements(this, startAtBoot))
@ -215,9 +211,12 @@ public class AutomationService extends Service implements OnInitListener
ActivityMainScreen.updateMainScreen(); ActivityMainScreen.updateMainScreen();
this.isRunning = true; 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); 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(); Toast.makeText(this, this.getResources().getString(R.string.serviceStarted), Toast.LENGTH_LONG).show();
// ********** Test area **********
// Miscellaneous.logEvent("i", "setNetworkType", "bin hier.", 3);
// Actions.setData(true);
// ********** Test area **********
/* /*
On normal phones the app is supposed to automatically restart in case of any problems. On normal phones the app is supposed to automatically restart in case of any problems.
@ -316,8 +315,6 @@ public class AutomationService extends Service implements OnInitListener
private void startUpRoutine() private void startUpRoutine()
{ {
Settings.serviceStartDone = false;
checkForTtsEngine(); checkForTtsEngine();
checkForPermissions(); checkForPermissions();
checkForRestrictedFeatures(); checkForRestrictedFeatures();
@ -336,9 +333,6 @@ public class AutomationService extends Service implements OnInitListener
if(r.getsGreenLight(AutomationService.this)) if(r.getsGreenLight(AutomationService.this))
r.activate(AutomationService.this, false); r.activate(AutomationService.this, false);
} }
Settings.serviceStartDone = true;
Settings.deviceStartDone = true;
} }
protected void startLocationProvider() protected void startLocationProvider()

View File

@ -215,7 +215,7 @@ public class ReceiverCoordinator
Class testClass = Class.forName(ActivityManageRule.activityDetectionClassPath); Class testClass = Class.forName(ActivityManageRule.activityDetectionClassPath);
Miscellaneous.runMethodReflective("ActivityDetectionReceiver", "stopActivityDetectionReceiver", null); Miscellaneous.runMethodReflective("ActivityDetectionReceiver", "stopActivityDetectionReceiver", null);
} }
catch(Exception e) catch(ClassNotFoundException e)
{ {
// Nothing to do, just not stopping this one. // Nothing to do, just not stopping this one.
} }

View File

@ -12,7 +12,7 @@ import java.util.Set;
public class Settings implements SharedPreferences public class Settings implements SharedPreferences
{ {
public static final int rulesThatHaveBeenRanHistorySize = 10; public static final int rulesThatHaveBeenRanHistorySize = 10;
public static final int lockSoundChangesInterval = 15; public final static int lockSoundChangesInterval = 15;
public static final int newsPollEveryXDays = 3; public static final int newsPollEveryXDays = 3;
public static final int newsDisplayForXDays = 3; public static final int newsDisplayForXDays = 3;
public static final int updateCheckFrequencyDays = 7; public static final int updateCheckFrequencyDays = 7;
@ -77,13 +77,7 @@ public class Settings implements SharedPreferences
public static ArrayList<String> whatHasBeenDone; public static ArrayList<String> whatHasBeenDone;
/* /*
Not saved permanently. Generic settings valid for all installations and not changable
*/
public static boolean deviceStartDone = true; // by default assume device has not just been started
public static boolean serviceStartDone = false;
/*
Generic settings valid for all installations and not changeable
*/ */
public static final String dateFormat = "E dd.MM.yyyy HH:mm:ss:ssss"; public static final String dateFormat = "E dd.MM.yyyy HH:mm:ss:ssss";
@ -606,4 +600,5 @@ public class Settings implements SharedPreferences
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }
} }

View File

@ -3,7 +3,7 @@ package com.jens.automation2;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
import android.content.Context; import android.content.Context;
import android.os.Build; import android.os.Build;
import android.os.SystemClock; import android.os.Bundle;
import android.service.notification.StatusBarNotification; import android.service.notification.StatusBarNotification;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
@ -25,6 +25,10 @@ import com.jens.automation2.receivers.PhoneStatusListener;
import com.jens.automation2.receivers.ProcessListener; import com.jens.automation2.receivers.ProcessListener;
import com.jens.automation2.receivers.ScreenStateReceiver; import com.jens.automation2.receivers.ScreenStateReceiver;
import static com.jens.automation2.Trigger.triggerParameter2Split;
import static com.jens.automation2.receivers.NotificationListener.EXTRA_TEXT;
import static com.jens.automation2.receivers.NotificationListener.EXTRA_TITLE;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.sql.Time; import java.sql.Time;
@ -34,31 +38,8 @@ import java.util.Date;
public class Trigger public class Trigger
{ {
public enum Trigger_Enum public enum Trigger_Enum {
{ pointOfInterest, timeFrame, charging, batteryLevel, usb_host_connection, speed, noiseLevel, wifiConnection, process_started_stopped, airplaneMode, roaming, nfcTag, activityDetection, bluetoothConnection, headsetPlugged, notification, deviceOrientation, profileActive, screenState, musicPlaying, phoneCall; //phoneCall always needs to be at the very end because of Google's shitty so called privacy
pointOfInterest,
timeFrame,
charging,
batteryLevel,
usb_host_connection,
speed,
noiseLevel,
wifiConnection,
process_started_stopped,
airplaneMode,
roaming,
nfcTag,
activityDetection,
bluetoothConnection,
headsetPlugged,
notification,
deviceOrientation,
profileActive,
screenState,
musicPlaying,
deviceStarts,
serviceStarts,
phoneCall; //phoneCall always needs to be at the very end because of Google's shitty so called privacy
public String getFullName(Context context) public String getFullName(Context context)
{ {
@ -106,10 +87,6 @@ public class Trigger
return context.getResources().getString(R.string.musicPlaying); return context.getResources().getString(R.string.musicPlaying);
case screenState: case screenState:
return context.getResources().getString(R.string.screenState); return context.getResources().getString(R.string.screenState);
case deviceStarts:
return context.getResources().getString(R.string.deviceStarts);
case serviceStarts:
return context.getResources().getString(R.string.serviceStarts);
default: default:
return "Unknown"; return "Unknown";
} }
@ -213,14 +190,6 @@ public class Trigger
if(!checkScreenState()) if(!checkScreenState())
result = false; result = false;
break; break;
case deviceStarts:
if(!checkDeviceStarts())
result = false;
break;
case serviceStarts:
if(!checkServiceStarts())
result = false;
break;
default: default:
break; break;
} }
@ -374,16 +343,6 @@ public class Trigger
return triggerParameter == MediaPlayerListener.isAudioPlaying(Miscellaneous.getAnyContext()); return triggerParameter == MediaPlayerListener.isAudioPlaying(Miscellaneous.getAnyContext());
} }
boolean checkDeviceStarts()
{
return checkServiceStarts() && !Settings.deviceStartDone;
}
boolean checkServiceStarts()
{
return !Settings.serviceStartDone;
}
boolean checkProfileActive() boolean checkProfileActive()
{ {
String demandedProfileName = getTriggerParameter2().split(Trigger.triggerParameter2Split)[0]; String demandedProfileName = getTriggerParameter2().split(Trigger.triggerParameter2Split)[0];
@ -1579,7 +1538,7 @@ public class Trigger
state = Miscellaneous.getAnyContext().getString(R.string.off); state = Miscellaneous.getAnyContext().getString(R.string.off);
break; break;
case "1": case "1":
state = Miscellaneous.getAnyContext().getString(R.string.on); state = Miscellaneous.getAnyContext().getString(R.string.on);
break; break;
case "2": case "2":
state = Miscellaneous.getAnyContext().getString(R.string.unlocked); state = Miscellaneous.getAnyContext().getString(R.string.unlocked);
@ -1587,15 +1546,8 @@ public class Trigger
default: default:
state = Miscellaneous.getAnyContext().getString(R.string.unknown); state = Miscellaneous.getAnyContext().getString(R.string.unknown);
} }
returnString.append(String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.screenIs), state));
break; returnString.append(String.format(Miscellaneous.getAnyContext().getString(R.string.screenIs), state));
case deviceStarts:
// This type doesn't have an activate/deactivate equivalent
returnString.append(Miscellaneous.getAnyContext().getResources().getString(R.string.deviceHasJustStarted));
break;
case serviceStarts:
// This type doesn't have an activate/deactivate equivalent
returnString.append(Miscellaneous.getAnyContext().getResources().getString(R.string.serviceHasJustStarted));
break; break;
default: default:
returnString.append("error"); returnString.append("error");

View File

@ -34,18 +34,17 @@ public class DeviceOrientationListener implements SensorEventListener, Automatio
static int sensorValueCounter = 0; static int sensorValueCounter = 0;
// Gravity rotational data // Gravity rotational data
float gravity[]; private float gravity[];
// Magnetic rotational data // Magnetic rotational data
float magnetic[]; //for magnetic rotational data private float magnetic[]; //for magnetic rotational data
float accels[] = new float[3]; private float accels[] = new float[3];
float mags[] = new float[3]; private float mags[] = new float[3];
float[] values = new float[3]; private float[] values = new float[3];
boolean hasMagneticSensor=false;
// azimuth, pitch and roll // azimuth, pitch and roll
float azimuth; private float azimuth;
float pitch; private float pitch;
float roll; private float roll;
boolean applies = false; boolean applies = false;
boolean flipped = false; boolean flipped = false;
@ -92,7 +91,7 @@ public class DeviceOrientationListener implements SensorEventListener, Automatio
isRunning = true; isRunning = true;
sManager.registerListener(this, sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); sManager.registerListener(this, sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
hasMagneticSensor = sManager.registerListener(this, sManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_NORMAL); sManager.registerListener(this, sManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_NORMAL);
} }
} }
@ -130,9 +129,6 @@ public class DeviceOrientationListener implements SensorEventListener, Automatio
break; break;
} }
if (!hasMagneticSensor)
mags=new float[]{1f,1f,1f};
if (mags != null && accels != null) if (mags != null && accels != null)
{ {
gravity = new float[9]; gravity = new float[9];

View File

@ -89,11 +89,6 @@ public class NotificationListener extends NotificationListenerService// implemen
{ {
lastNotification = convertNotificationToSimpleNotification(created, sbn); lastNotification = convertNotificationToSimpleNotification(created, sbn);
if(created)
Miscellaneous.logEvent("i", "New notification", lastNotification.toString(), 5);
else
Miscellaneous.logEvent("i", "Notification removed", lastNotification.toString(), 5);
ArrayList<Rule> ruleCandidates = Rule.findRuleCandidates(Trigger.Trigger_Enum.notification); ArrayList<Rule> ruleCandidates = Rule.findRuleCandidates(Trigger.Trigger_Enum.notification);
for (int i = 0; i < ruleCandidates.size(); i++) for (int i = 0; i < ruleCandidates.size(); i++)
{ {

View File

@ -700,8 +700,4 @@
<string name="locationNotWorkingOn12">Das Abrufen des Standorts scheint unter Android 12 derzeit nicht zu funktionieren. Wenn es bei Ihnen nicht klappt, tut mir das leid. Ich werde versuchen die Ursache zu beheben, sobald mir die Ursache bekannt ist. Wenn der Donut bei Ihnen also nicht aufhört sich zu drehen, wissen Sie warum.</string> <string name="locationNotWorkingOn12">Das Abrufen des Standorts scheint unter Android 12 derzeit nicht zu funktionieren. Wenn es bei Ihnen nicht klappt, tut mir das leid. Ich werde versuchen die Ursache zu beheben, sobald mir die Ursache bekannt ist. Wenn der Donut bei Ihnen also nicht aufhört sich zu drehen, wissen Sie warum.</string>
<string name="profileXrequiresThis">Profil \"%1$s\" benötigt dies.</string> <string name="profileXrequiresThis">Profil \"%1$s\" benötigt dies.</string>
<string name="lastProfile">Letztes Profil:</string> <string name="lastProfile">Letztes Profil:</string>
<string name="serviceStarts">Dienst startet</string>
<string name="deviceStarts">Gerät startet</string>
<string name="deviceHasJustStarted">Gerät ist gerade gestartet</string>
<string name="serviceHasJustStarted">Dienst ist gerade gestartet</string>
</resources> </resources>

View File

@ -699,8 +699,4 @@
<string name="locationNotWorkingOn12">Obtener la locación no parece estar funcionando en dispositivos Android 12 actualmente. Si no está funcionando para ti, lo siento. Intentaré arreglar esto tan pronto como conozca la causa. Así que si la rosquilla no deja de girar, ya sabes por qué.</string> <string name="locationNotWorkingOn12">Obtener la locación no parece estar funcionando en dispositivos Android 12 actualmente. Si no está funcionando para ti, lo siento. Intentaré arreglar esto tan pronto como conozca la causa. Así que si la rosquilla no deja de girar, ya sabes por qué.</string>
<string name="profileXrequiresThis">El perfil \"%1$s\" requiere esto.</string> <string name="profileXrequiresThis">El perfil \"%1$s\" requiere esto.</string>
<string name="lastProfile">Último perfil:</string> <string name="lastProfile">Último perfil:</string>
<string name="deviceStarts">Dispositivo esta enciendo</string>
<string name="serviceStarts">Servicio esta enciendo</string>
<string name="deviceHasJustStarted">el dispositivo justamente ha encendido</string>
<string name="serviceHasJustStarted">el servicio justamente ha encendido</string>
</resources> </resources>

View File

@ -700,8 +700,4 @@
<string name="profileXrequiresThis">Questo è richiesto dal profilo \"%1$s\".</string> <string name="profileXrequiresThis">Questo è richiesto dal profilo \"%1$s\".</string>
<string name="locationNotWorkingOn12">Ottenere la posizione non sembra funzionare su dispositivi Android 12 al momento. Se non funziona per te, mi dispiace. Cercherò di risolvere questo problema non appena conoscerò la causa. Quindi, se cerchio rotante non smette di girare, sai perché.</string> <string name="locationNotWorkingOn12">Ottenere la posizione non sembra funzionare su dispositivi Android 12 al momento. Se non funziona per te, mi dispiace. Cercherò di risolvere questo problema non appena conoscerò la causa. Quindi, se cerchio rotante non smette di girare, sai perché.</string>
<string name="lastProfile">Ultimo profilo:</string> <string name="lastProfile">Ultimo profilo:</string>
<string name="deviceStarts">Device starts</string>
<string name="serviceStarts">Avvio del servizio</string>
<string name="deviceHasJustStarted">Il dispositivo è appena stato avviato</string>
<string name="serviceHasJustStarted">il servizio è appena iniziato</string>
</resources> </resources>

View File

@ -698,8 +698,4 @@
<string name="locationNotWorkingOn12">Het verkrijgen van de locatie lijkt momenteel niet te werken op Android 12-apparaten. Als het niet voor je werkt, spijt het me. Ik zal proberen dit op te lossen zodra ik de oorzaak ken. Dus als de donut niet stopt met draaien, weet je waarom.</string> <string name="locationNotWorkingOn12">Het verkrijgen van de locatie lijkt momenteel niet te werken op Android 12-apparaten. Als het niet voor je werkt, spijt het me. Ik zal proberen dit op te lossen zodra ik de oorzaak ken. Dus als de donut niet stopt met draaien, weet je waarom.</string>
<string name="profileXrequiresThis">Profiel \"%1$s\" vereist dit.</string> <string name="profileXrequiresThis">Profiel \"%1$s\" vereist dit.</string>
<string name="lastProfile">Laatste profiel:</string> <string name="lastProfile">Laatste profiel:</string>
<string name="deviceHasJustStarted">apparaat is net gestart</string>
<string name="serviceHasJustStarted">service is net begonnen</string>
<string name="serviceStarts">Service start</string>
<string name="deviceStarts">Apparaat start</string>
</resources> </resources>

View File

@ -796,8 +796,4 @@
<string name="musicCheckFrequencySummary">Milliseconds between checks</string> <string name="musicCheckFrequencySummary">Milliseconds between checks</string>
<string name="locationNotWorkingOn12">Getting the location does not seem to be working on Android 12 devices currently. If it isn\'t working for you, I\'m sorry. I\'ll try to fix this as soon as I know the cause. So if the donut doesn\'t stop spinning, you know why.</string> <string name="locationNotWorkingOn12">Getting the location does not seem to be working on Android 12 devices currently. If it isn\'t working for you, I\'m sorry. I\'ll try to fix this as soon as I know the cause. So if the donut doesn\'t stop spinning, you know why.</string>
<string name="lastProfile">Last profile:</string> <string name="lastProfile">Last profile:</string>
<string name="deviceStarts">Device starts</string>
<string name="serviceStarts">Service starts</string>
<string name="deviceHasJustStarted">device has just started</string>
<string name="serviceHasJustStarted">service has just started</string>
</resources> </resources>

View File

@ -5,7 +5,7 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.1.2' classpath 'com.android.tools.build:gradle:7.1.1'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files

View File

@ -0,0 +1,14 @@
Neuer Auslöser:
* Bildschirmstatus (ein/aus)
Neue Aktionen:
* Benachrichtigung erstellen
* Benachrichtigung(en) schließen
* Medienwiedergabe steuern
Fehler behoben:
* Übersetzungsfehler im niederländischen Variablentext
* Variablen wurden beim Senden von Textnachrichten nicht ersetzt
* Der Dienst startete nicht immer, nachdem das Gerät eingeschaltet wurde
* Setzen von Klingeltönen auf Android 11 und höher
* Für das Ändern von Klingeltönen ist die Speicher-lesen-Berechtigung nötig
* Profil, das nicht verwendet wurde, konnte nicht gelöscht werden
* Orientierungssensor an Geräten ohne Magnet-Sensor

View File

@ -7,4 +7,5 @@
* Fixed: Service wouldn't always start after device has been powered on * Fixed: Service wouldn't always start after device has been powered on
* Fixed: Set ringtones on Android 11 and above * Fixed: Set ringtones on Android 11 and above
* Fixed: Permission read storage required for changing ringtones * Fixed: Permission read storage required for changing ringtones
* Fixed: Profile that were not in use, could not be deleted. * Fixed: Profile that were not in use, could not be deleted.
* Fixed: Orientation sensor on devices that have no magnetic sensor.

View File

@ -1,2 +0,0 @@
* New trigger: device has just started
* New trigger: service has just started

View File

@ -0,0 +1,14 @@
Nuevo disparador:
* estado de la pantalla (encendido / apagado)
Nuevas acciones:
* Crear notificación
* Cerrar notificación(es)
* Controlar la reproducción de medios
Corregido:
* Error de traducción en texto de variables holandesas
* Las variables no fueron reemplazadas al enviar mensajes de texto
* El servicio no siempre se iniciaría después de que el dispositivo se haya encendido
* Establecer tonos de llamada en Android 11 y superior
* Se requiere almacenamiento de lectura de permisos para cambiar los tonos de llamada
* Perfil que no estaba en uso, no se pudo eliminar
* Sensor de orientación en dispositivos que no tienen sensor magnético

View File

@ -0,0 +1,14 @@
Nuovo trigger:
* stato dello schermo (on / off)
Nuove azioni:
* Crea notifica
* Chiudi notifica (s)
* Controlla la riproduzione multimediale
Fissato:
* Bug di traduzione nel testo delle variabili olandesi
* Le variabili non sono state sostituite durante l'invio di messaggi di testo
* Il servizio non si avvia sempre dopo l'accensione del dispositivo
* Imposta suonerie su Android 11 e versioni successive
* Autorizzazione di lettura necessaria per cambiare le suonerie
* Profilo che non era in uso, non poteva essere eliminato
* Sensore di orientamento su dispositivi che non hanno sensore mag.

View File

@ -0,0 +1,11 @@
* Nieuwe trigger: schermstatus (aan / uit)
* Nieuwe actie: Melding maken
* Nieuwe actie: Sluit melding (en)
* Nieuwe actie: Bedien het afspelen van media
* Fixed: Vertaling bug in Nederlandse variabelen tekst
* Opgelost: Variabelen zijn niet vervangen bij het verzenden van sms-berichten
* Opgelost: service start niet altijd nadat het apparaat is ingeschakeld
* Opgelost: stel beltonen in op Android 11 en hoger
* Opgelost: Toestemming leesopslag vereist voor het wijzigen van beltonen
* Opgelost: Profiel dat niet in gebruik was, kon niet worden verwijderd.
* Vast: Oriëntatiesensor op apparaten die geen magnetische sensor hebben.