diff --git a/app/src/main/java/com/jens/automation2/Actions.java b/app/src/main/java/com/jens/automation2/Actions.java
index c2372132..0c298d8a 100644
--- a/app/src/main/java/com/jens/automation2/Actions.java
+++ b/app/src/main/java/com/jens/automation2/Actions.java
@@ -608,20 +608,26 @@ public class Actions
{
// selected by action
Miscellaneous.logEvent("i", "StartOtherApp", "Starting app by action: " + param, 3);
- paramsStartIndex = 1;
- externalActivityIntent = new Intent(param);
- externalActivityIntent.addCategory(Intent.CATEGORY_DEFAULT);
-// Context c = autoMationServerRef.getApplicationContext();
-// c.getApplicationContext()
-// externalActivityIntent.setPackage("com.wireguard.android");//this did the trick actually
-// if(externalActivityIntent.resolveActivity(autoMationServerRef.getPackageManager()) == null)
-// Toast.makeText(context, "bad", Toast.LENGTH_LONG).show();
+
+ externalActivityIntent = new Intent();
+
+ if(params.length > 1 && !params[1].contains("/"))
+ {
+ externalActivityIntent.setPackage(params[0]);
+ externalActivityIntent.setAction(params[1]);
+ paramsStartIndex = 2;
+ }
+ else
+ {
+ externalActivityIntent.setAction(params[0]);
+ paramsStartIndex = 1;
+ }
}
externalActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Pack intents
- for (int i = paramsStartIndex = 2; i < params.length; i++)
+ for (int i = paramsStartIndex; i < params.length; i++)
{
String[] singleParam = params[i].split("/");
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionStartActivity.java b/app/src/main/java/com/jens/automation2/ActivityManageActionStartActivity.java
index 16d45fe2..7033e43d 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionStartActivity.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionStartActivity.java
@@ -22,11 +22,11 @@ import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
+import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.Spinner;
-import android.widget.TextView;
import android.widget.Toast;
import com.jens.automation2.Action.Action_Enum;
@@ -39,7 +39,7 @@ import java.util.List;
public class ActivityManageActionStartActivity extends Activity
{
ListView lvIntentPairs;
- EditText etParameterName, etParameterValue, etSelectedActivity;
+ EditText etParameterName, etParameterValue, etPackageName, etActivityOrActionPath;
Button bSelectApp, bAddIntentPair, bSaveActionStartOtherActivity;
Spinner spinnerParameterType;
boolean edit = false;
@@ -269,7 +269,7 @@ public class ActivityManageActionStartActivity extends Activity
public void onClick(DialogInterface dialog, int which)
{
ActivityInfo ai = ActivityManageActionStartActivity.getActivityInfoForPackageNameAndActivityName(packageName, activityArray[which]);
- etSelectedActivity.setText(ai.packageName + ";" + ai.name);
+ etActivityOrActionPath.setText(ai.packageName + ";" + ai.name);
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
@@ -290,7 +290,8 @@ public class ActivityManageActionStartActivity extends Activity
bAddIntentPair = (Button)findViewById(R.id.bAddIntentPair);
bSaveActionStartOtherActivity = (Button)findViewById(R.id.bSaveActionStartOtherActivity);
spinnerParameterType = (Spinner)findViewById(R.id.spinnerParameterType);
- etSelectedActivity = (EditText) findViewById(R.id.etSelectedApplication);
+ etPackageName = (EditText) findViewById(R.id.etPackageName);
+ etActivityOrActionPath = (EditText) findViewById(R.id.etActivityOrActionPath);
rbStartAppSelectByActivity = (RadioButton)findViewById(R.id.rbStartAppSelectByActivity);
rbStartAppSelectByAction = (RadioButton)findViewById(R.id.rbStartAppSelectByAction);
@@ -400,6 +401,26 @@ public class ActivityManageActionStartActivity extends Activity
}
});
+
+ rbStartAppSelectByActivity.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
+ {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
+ {
+ if(isChecked)
+ bSelectApp.setEnabled(isChecked);
+ }
+ });
+
+ rbStartAppSelectByAction.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
+ {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
+ {
+ if(isChecked)
+ bSelectApp.setEnabled(!isChecked);
+ }
+ });
Intent i = getIntent();
if(i.getBooleanExtra("edit", false) == true)
@@ -417,17 +438,30 @@ public class ActivityManageActionStartActivity extends Activity
String[] params = resultingAction.getParameter2().split(";");
- if(selectionByActivity)
- etSelectedActivity.setText(params[0] + ";" + params[1]);
- else
- etSelectedActivity.setText(params[0]);
-
int startIndex = -1;
- if(selectionByActivity && params.length >= 2)
- startIndex = 2;
- else if(!selectionByActivity && params.length >= 1)
- startIndex = 1;
+ if(selectionByActivity)
+ {
+ etPackageName.setText(params[0]);
+ etActivityOrActionPath.setText(params[1]);
+
+ if(params.length >= 2)
+ startIndex = 2;
+ }
+ else
+ {
+ if(params[1].contains("/"))
+ {
+ etActivityOrActionPath.setText(params[0]);
+ startIndex = 1;
+ }
+ else
+ {
+ etPackageName.setText(params[0]);
+ etActivityOrActionPath.setText(params[1]);
+ startIndex = 2;
+ }
+ }
if(startIndex > -1 && params.length > startIndex)
{
@@ -455,26 +489,26 @@ public class ActivityManageActionStartActivity extends Activity
private boolean saveAction()
{
- if(etSelectedActivity.getText().toString().length() == 0)
+ if(rbStartAppSelectByActivity.isChecked())
{
- Toast.makeText(ActivityManageActionStartActivity.this, getResources().getString(R.string.selectApplication), Toast.LENGTH_LONG).show();
- return false;
+ if (etPackageName.getText().toString().length() == 0)
+ {
+ Toast.makeText(ActivityManageActionStartActivity.this, getResources().getString(R.string.enterPackageName), Toast.LENGTH_LONG).show();
+ return false;
+ }
+ else if (etActivityOrActionPath.getText().toString().length() == 0)
+ {
+ Toast.makeText(ActivityManageActionStartActivity.this, getResources().getString(R.string.selectApplication), Toast.LENGTH_LONG).show();
+ return false;
+ }
}
-// else
-// {
-// Intent testIntent = new Intent(ActivityManageActionStartActivity.this, etSelectedActivity);
-// Intent externalActivityIntent = new Intent(Intent.ACTION_MAIN);
-// externalActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-// externalActivityIntent.addCategory(Intent.CATEGORY_LAUNCHER);
-// externalActivityIntent.setClassName(packageName, className);
-//
-// boolean activityExists = externalActivityIntent.resolveActivityInfo(getPackageManager(), 0) != null;
-// }
-
- if(etSelectedActivity.getText().toString().equals(getResources().getString(R.string.selectApplication)))
+ else
{
- Toast.makeText(this, getResources().getString(R.string.selectApplication), Toast.LENGTH_LONG).show();
- return false;
+ if(etActivityOrActionPath.getText().toString().contains(";"))
+ {
+ Toast.makeText(this, getResources().getString(R.string.enterValidAction), Toast.LENGTH_LONG).show();
+ return false;
+ }
}
if(resultingAction == null)
@@ -486,10 +520,15 @@ public class ActivityManageActionStartActivity extends Activity
String parameter2;
-// if(etSelectedActivity.getText().toString().contains(";"))
- parameter2 = etSelectedActivity.getText().toString();
-// else
-// parameter2 = "dummyPkg;" + etSelectedActivity.getText().toString();
+ if(rbStartAppSelectByActivity.isChecked())
+ parameter2 = etPackageName.getText().toString() + ";" + etActivityOrActionPath.getText().toString();
+ else
+ {
+ if(etPackageName.getText().toString() != null && etPackageName.getText().toString().length() > 0)
+ parameter2 = etPackageName.getText().toString() + ";" + etActivityOrActionPath.getText().toString();
+ else
+ parameter2 = etActivityOrActionPath.getText().toString();
+ }
for(String s : intentPairList)
parameter2 += ";" + s;
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java
index 79b1311f..46b75864 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java
@@ -258,7 +258,7 @@ public class ActivityManageTriggerNotification extends Activity
bSaveTriggerNotification = (Button)findViewById(R.id.bSaveTriggerNotification);
spinnerTitleDirection = (Spinner)findViewById(R.id.spinnerTitleDirection);
spinnerTextDirection = (Spinner)findViewById(R.id.spinnerTextDirection);
- tvSelectedApplication = (TextView)findViewById(R.id.etSelectedApplication);
+ tvSelectedApplication = (TextView)findViewById(R.id.etActivityOrActionPath);
chkNotificationDirection = (CheckBox)findViewById(R.id.chkNotificationDirection);
directions = new String[] {
diff --git a/app/src/main/res/layout/action_start_activity.xml b/app/src/main/res/layout/action_start_activity.xml
index c98df669..e64abb58 100644
--- a/app/src/main/res/layout/action_start_activity.xml
+++ b/app/src/main/res/layout/action_start_activity.xml
@@ -31,6 +31,19 @@
+
+
+
+
+
+
@@ -73,32 +86,28 @@
android:layout_height="wrap_content"
android:text="@string/selectApplication" />
-
+ android:orientation="vertical">
-
+
-
+
-
-
-
+
diff --git a/app/src/main/res/layout/help_text.xml b/app/src/main/res/layout/help_text.xml
index 4e392040..e8931bc8 100644
--- a/app/src/main/res/layout/help_text.xml
+++ b/app/src/main/res/layout/help_text.xml
@@ -17,7 +17,7 @@
android:background="@color/barBackgroundColor" >
Es gibt bereits einen Ort mit diesem Namen.
Es gibt bereits eine Regel mit diesem Namen.
Programm starten
- Wählen Sie eine Anwendung
+ Wählen Sie\neine Anwendung
Wählen Sie ein Paket der Anwendung
Wählen Sie die Activity des Pakets
Fehler beim Starten einer anderen Anwendung
@@ -636,6 +636,10 @@
Regel \"%1$s\" wurde fertig ausgeführt.
Parameter hinzufügen
Fehler beim Ausführen einer Regel.
- Sie können den Pfad einer Aktivität manuell eingeben, aber es wird stark empfohlen den \"Auswählen\" Knopf zu verwenden. Wenn Sie etwas manuell eingeben, behalten Sie bitte im Hinterkopf, daß keine Variablen aufgelöst werden. D.h., wenn Sie z.B. die Kamera starten wollen, indem Sie \"MediaStore.ACTION_IMAGE_CAPTURE\" verwenden, wird das nicht verwenden. Wenn Sie in der Android Dokumentation schauen, werden Sie sehen, daß sich dahinter eigentlich der Wert \"android.media.action.IMAGE_CAPTURE\" verbirgt, der hier direkt eingegeben werden müßte.
+ Hier haben Sie 2 grundsätzliche Optionen:\n\n1. Sie können ein Programm starten, indem Sie eine Activity auswählen.\nStellen Sie sich das so vor, daß Sie ein bestimmtes Fenster einer Anwendung vorauswählen, in das man direkt springt. Behalten Sie im Kopf, daß das nicht immer funktionieren wird. Das liegt daran, daß die Fenster einer Anwendung miteinander interagieren können, sich u.U. Parameter übergeben. Wenn man jetzt ganz kalt in ein bestimmtes Fenster springt, könnte dieses zum Start z.B. bestimmte Parameter erwarten - die fehlen. So könnte es passieren, daß das Fenster zwar versucht zu öffnen, das aber nicht klappt und es somit nie wirlich sichtbar wird. Versuchen Sie\'s trotzdem!\nSie können den Pfad manuell eingeben, sollten aber den Auswählen-Knopf benutzen. Wenn Sie es dennoch manuell eingeben, geben Sie den PackageName ins obere Feld ein und den vollen Pfad der Activity ins untere.\n\n2. Auswahl per Action\nIm Gegensatz zur Auswahl eines bestimmten Fensters, können Sie ein Programm auch über eine Action starten lassen. Stellen Sie sich das so vor als würden Sie in den Wald rufen \"Ich hätte gerne XYZ\" und falls eine Anwendung installiert ist, die das liefern kann, wird sie gestartet. Ein gutes Beispiel wäre zum Beispiel "Browser starten" - es könnten sogar mehrere installiert sein, die das können (aber normalerweise gibts eine, die als Standard eingestellt ist).\nDiese Action müssen Sie manuell eingeben. Der PackageName ist hier optional. Behalten Sie dabei im Auge, daß mögliche Variablen nicht aufgelöst werden. Beispielsweise werden Sie häufig im Internet finden, daß man die Kamera über die Action \"MediaStore.ACTION_IMAGE_CAPTURE\" starten kann. Das ist grundsätzlich nicht richtig, wird aber nicht direkt funktionieren, denn das ist nur eine Variable. Sie müssen dann einen Blick in die Android Dokumentation werfen, wo Sie sehen werden, daß sich hinter dieser Variable eigentlich der Wert \"android.media.action.IMAGE_CAPTURE\" verbirgt. Gibt man diesen in das Feld ein, wird\'s funktionieren.
Kann die Audiodatei %1$s nicht finden und daher auch nicht abspielen.
+ per Activity
+ per Action
+ Auswahlmethode
+ Tunnelverbindungen der Wireguard Anwendung steuern
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 78da078a..3ac1f289 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -29,549 +29,38 @@
No
He recibido una posición de GPS. Precisión:
He recibido una posición de network. Precisión:
- Please enter a valid latitude.
- Please enter a valid longitude.
- Please enter a valid positive radius.
- Select at least one day.
- Attempting to bind to service...
- Attempting to unbind from service...
- Bound to service.
- Unbound from service.
- Request to start service, but it is already running.
- Do what with rule?
- Do what with location?
- Do what with profile?
- delete
- Delete
- Automation service stopped.
- Stopping service.
- Still getting position
- Last Rule:
- at
- Service:
- Get current location
- Save location
- Delete location
- Latitude
- Longitude
- Rule name
- Trigger(s)
- and-connected (all have to apply at the same time)
- Add trigger
- Action(s)
- (will be executed in that order)
- Add action
- Save Rule
- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
- Sunday
- Start
- End
- Save
- URL to trigger:
- Variables:\nYou can use the following variables. Upon triggering they will be replaced with the corresponding value on your device. Include the brackets in your text.\n\n[uniqueid] - Your device\'s unique id\n[serialnr] - Your device\'s serial number\n[latitude] - Your device\'s latitude\n[longitude] - Your device\'s longitude\n[phonenr] - Number of last incoming or outgoing call\n[d] - Day of the month, 2 digits with leading zeros\n[m] - Numeric representation of a month, with leading zeros\n[Y] - A full numeric representation of a year, 4 digits\n[h] - 12-hour format of an hour with leading zeros\n[H] - 24-hour format of an hour with leading zeros\n[i] - Minutes with leading zeros\n[s] - Seconds, with leading zeros\n[ms] - milliseconds
- wifi
- Activating
- Deactivating
- Failed to trigger Bluetooth. Does this device have Bluetooth?
- The url has to have least 10 characters.
- The text has to have least 10 characters.
- Select type of trigger
- entering
- leaving
- You haven\'t specified any locations. Do that first.
- started
- stopped
- connected
- disconnected
- Select location
- Select type of action
- Select sound profile
- What to do with it trigger?
- What to do with it action?
- Radius has to be a positive number.
- There are still rules that reference this location (%1$s). I can\'t delete it, yet.
- General settings
- Start at system boot
- On/Off
- Write log file
- Use TextToSpeech on normal
- Use TextToSpeech on vibrate
- Use TextToSpeech on silent
- TTS on normal
- TTS on vibrate
- TTS on silent
- Positioning settings
- Listen to wifi state changes where possible
- Wifi state
- Observe device movement where wifi is not available
- Accelerometer
- Use Accelerometer after x minutes without cell mast change
- Cell mast idle time
- Threshold for accelerometer movements
- Accelerometer threshold
- Positioning thresholds
- Minimum distance change for gps location updates
- Distance for gps update [m]
- Minimum distance change for network location updates
- Distance for network update [m]
- Satisfactory accuracy when getting location via gps in meters
- GPS accuracy [m]
- Satisfactory accuracy when getting location via cell towers in meters
- Network accuracy [m]
- Minimum time change in seconds for location updates
- Time for update [milliseconds]
- Sound settings
- Show help
- Rules
- All triggers in a rule are AND-connected. The rule will only apply if all triggers are met. If you want OR create another rule.
- TimeFrames
- If you specify a rule with a timeframe you have two choices. You can choose between entering and leaving a timeframe. Either way an action is triggered only once.\nSo if you create a rule that has \"entering timeframe xyz\" as trigger and let it change your sound profile to vibrate that does not mean that the phone will automatically go to ring if the timeframe is over. If you want that you need to specify another rule with another timeframe.
- Toggable rules
- Rules have a flag called \"Toggable\". This means that if a rule is executed and afterwards the same triggers apply again the rule will be executed in an opposite mode where applicable. Currently this will only happen in conjunction with NFC tags. If you tap them twice and there\'s a toggable rule associated with it it will do the opposite of the current situation, e.g. deactivate wifi if it\'s currently activated.
- If you specify a rule with a process monitor the application will check for that process every x seconds (you can change that in settings). I know that can be kind of slow, but continuous monitoring would drain the battery to fast. And there is no broadcast from the OS for that event.
- Maximum time between 2 locations for speed determination.
- Time in minutes
- exceeds
- drops below
- Noise level measurement
- Seconds between noise level measurements
- Seconds between noise level measurements
- Length in seconds for each noise level measurement
- Length of each noise level measurement
- Physical reference value for noise level measurement
- Reference for noise measurement
- Log level (1=minimum, 5=maximum)
- Log level
- Rule active
- Location
- Timeframe
- Battery charging
- USB connection to a computer
- Speed
- Background noise level
- Wifi
- Bluetooth
- USB Tethering
- Wifi Tethering
- Display rotation
- turn Wifi on
- turn Wifi off
- turn Bluetooth on
- turn Bluetooth off
- Trigger a URL
- Change sound profile
- turn USB Tethering on
- turn USB Tethering off
- turn Wifi Tethering on
- turn Wifi Tethering off
- turn airplane mode on
- turn airplane mode off
- enable screen rotation
- disable screen rotation
- ScreenRotation enabled.
- ScreenRotation disabled.
- ScreenRotation was already enabled.
- ScreenRotation was already disabled.
- No locations defined.
- Active location:
- Closest location:
- Overview
- Location
- Locations
- A location is made up of GPS coordinates and a radius. Since positioning via cell towers is rather unprecise (but fast and cheap) do not specify the radius too small. The application will suggest you a minimum radius when you create a new location.
- Service is not running.
- General
- To use this program you must setup rules. Those contain triggers, e.g. if you reach a specified area or you enter a certain time. After that\'s been done click the on/off button on the main screen.
- Unknown action specified
- Error triggering URL
- Error changing screen rotation
- Error determining wifiAp state
- Error activating wifiAp
- Failed to trigger Bluetooth. Does this device have Bluetooth?
- attempting download of
- Error getting connectionManager service. Not doing anything to UsbTethering.
- Error determining current UsbTethering state.
- Detecting tetherable usb interface.
- Clearing both location listeners.
- Starting service after app update.
- Not starting service after app update.
- Starting service at phone boot.
- Not starting service at phone boot.
- Application has been updated.
- Start service automatically after app update if it has been running before.
- Start service after update
- Wifi connection
- Wifi name
- Enter a wifi name. Leave empty for any wifi.
- Cancel
- Rule doesn\'t apply. We are slower than
- Rule doesn\'t apply. We are faster than
- Rule doesn\'t apply. It\'s quieter than
- Rule doesn\'t apply. It\'s louder than
- Rule doesn\'t apply. Battery level is lower than
- Rule doesn\'t apply. Battery level is higher than
- Rule doesn\'t apply. Not the correct SSID (demanded: \"%1$s\", given: \"%2$s\").
- Rule doesn\'t apply. There is no tag label or not tag at all.
- Rule doesn\'t apply. Wrong tag label.
- Rule %1$s is deactivated, can\'t apply.
- starting
- stopping
- connecting
- disconnecting
- exceeding
- dropping below
- connected to wifi \"%1$s\"
- disconnected from wifi \"%1$s\"
- any wifi
- Can\'t stop it.
- HTTP(s) Requests
- Accept all certificates
- Skip validity check of SSL certificates (recommended against activating this)
- Number of attempts in case HTTP requests fail for connectivity reasons
- Number of HTTP attempts
- Timeout for HTTP requests [seconds]
- Timeout [sec]
- Pause before another attempt [seconds]
- Pause [sec]
- Run manually
- The service has to be running for that.
- GPS comparison
- Stopping comparison GPS measurement due to timeout.
- GPS timeout [sec]
- Maximum time in seconds to trying getting a GPS location for comparison. If over last known location will be applied.
- Starting GPS timeout.
- Forced location update
- Due to timeout in comparison measurement the last best location will be applied.
- If you are at a location, restart your device or the application and leave the location the application will run rules accociated to leaving the location upon its next start.
- Remember last active location
- Mute during calls
- Mute TextToSpeech during calls
- There is already another location by that name.
- There is already another rule by that name.
- Start another program
- Select app
- Select package of application
- Select activity of chosen package
- Error starting other activity
- Another app is started/stopped
- Process monitoring
- Seconds between process monitorings
- The lower the higher the battery usage
- Refreshing process list.
- Processes
- Starting periodic process monitoring engine.
- Process monitoring
- Periodic process monitoring is already running. Won\'t start it again.
- Stopping periodic process monitoring engine.
- Periodic process monitoring is not active. Can\'t stop it.
- Periodic process monitoring started.
- Periodic process monitoring stopped.
- Rearming process monitoring message.
- Not rearming process monitoring message, stop requested.
- Message received stating process monitoring is complete.
- App started.
- App stopped.
- Running app
- Error writing settings to persistent memory.
- Settings
- Writing settings to persistent memory.
- Refreshing settings from file to memory.
- Error reading settings.
- Invalid stuff stored in settings. Erasing settings...
- Initializing settings to persistent memory.
- Error initializing settings to persistent memory.
- Settings erased.
- Settings set to default.
- Battery level
- Select speed
- Select battery level
- Applying settings, rules and locations.
- Privacy Policy
- A browser will now open on your device and load the privacy policy from the developer\'s website.
- Wait before next action
- Wakeup device
- Enter a value in milliseconds how long it should be waited before next action.
- Enter a value in milliseconds how long device should at least stay awake. 0 for default values.
- Enter a positive valid non-decimal number.
- Move up
- Move down
- Can\'t move item up. It is already at the top.
- Can\'t move item down. It is already at the bottom.
- Wifi name specified, checking that.
- Wifi name matches. Rule will apply.
- No wifi name specified, any will do.
- RuleCheck of %1$s
- Airplane mode
- Activate
- Deactivate
- Beginning from Android version 4.2 this feature only works if your device is rooted.
- You asked for a position to be added to your URL. Unfortunately at this point I do not have any location, yet.
- Add Intent pair
- Parameter name
- Parameter value
- Parameter type
- Select a type for the intent pair.
- Enter a name for the intent pair.
- Enter a value for the intent pair.
- What to do with pair?
- Getting list of installed applications...
- On which days?
- Inside or outside those timeframes?
- Switch on or off?
- Name
- Radius [m]
- Status
- Data connection
- turn mobile data on
- turn mobile data off
- Roaming
- activated
- deactivated
- until
- Application
- is
- Phone call
- with
- Phone number
- Enter phone number. Leave empty for any number.
- Select call direction
- any
- incoming
- outgoing
- incoming
- outgoing
- any number
- number
- NFC tag
- close to
- with label
- It appears this device does not have NFC.
- Read ID from tag
- Write tag
- Enter a valid identifier for the tag (like \"Home front door\").
- Tag written successfully.
- Error writing tag. Is it in range?
- Tag discovered.
- Bring an NFC tag into range.
- Tag found with text:
- Unsupported Encoding:
- No NFC NDEF intent, but
- NFC not supported in this Android version, yet.
- Cannot run rules.
- Can\'t download anything. Amount of http requests in settings is lower than 1.
- Apply tag to rule
- Tag read successfully.
- Value stored not suitable.
- No tag present.
- Write new NFC ID
- Use existing NFC tag
- New ID:
- Current ID:
- Tag data no usable, write anew.
- Bring a tag into range to read.
- Toggle rule
- Toggling
- toggle
- Overlap detected to location %1$s of %2$s meters. Reduce radius by at least that.
- No overlap to other locations detected.
- Rule %1$s is toggable.
- Rule %1$s is not suitable for toggling.
- none
- any location
- Invalid name for location.
- Erase settings
- Default settings
- Are you sure?
- At least location %1$s could be in range, if not others in addition.
- No location in relevant range.
- Activity detection
- Detected activity:
- In vehicle (car/bus)
- On bicycle
- On foot
- Still
- Unknown
- Tilting
- Walking
- Running
- Invalid activity
- Rule doesn\'t apply. Detected activity %1$s given, but too low probability (%2$s %%), required %3$s %%.
- Rule doesn\'t apply. Required activity %1$s not present.
- Select type of activity
- This trigger is only available if Google Play Services is installed.
- Activity detection frequency [sec]
- Seconds between attempts to detect activity.
- Activity detection probability
- Certainty from which activities are accepted as fact.
- Incoming telephone call from %1$s.
- Outgoing telephone call to %1$s.
- Speak text
- Text to speak
- Toggling is currently only allowed for rules that have NFC tags as trigger. See help for further information.
- Error reading locations and rules from file.
- It appears no data change has been saved. However there may have been changes in memory that need to be rolled back. Rereading file.
- Bluetooth connection
- Bluetooth connection to %1$s
- Bluetooth connection to %1$s torn
- Bluetooth device %1$s in range.
- Bluetooth device %1$s out of range.
- any device
- Rule doesn\'t apply. Not the correct bluetooth device name.
- Rule doesn\'t apply. Not the correct bluetooth device address.
- no device
- one from list
- connection to device
- disconnection from device
- device in range
- device out of range
- Select a device option.
- Select a connection option.
- Rule doesn\'t apply. Device is in range, but should not be.
- Rule doesn\'t apply. Wrong state.
- Headset connection
- Open music player
- Headset (type: %1$s) connected
- Headset (type: %1$s) disconnected
- Headphone
- Microphone
- Either
- Select type of headphone
- Rule doesn\'t apply. Wrong headphone type.
- Ignoring activity detection update. Came in sooner that %1$s seconds.
- What\'s this?
- At least rule \"%1$s\" is using a trigger of type \"%2$s\".
- Only private locationing
+ Lunes
+ Martes
+ Miercoles
+ Jueves
+ Viernes
+ Sabado
+ Microfóno
+ Que es eso?
+ Solo usar localización privada
Avoid locationing methods that may send your location to a provider, e.g. Google. This will use GPS only and may therefore be slow or not work reliably.
Private Locationing enabled, enforcing GPS use.
Private Locationing not enabled, using regular provider search.
- GPS measurement
- GPS measurement stopped due to timeout.
- Cell mast changed: %1$s
- If you think the noise detection isn\'t working correctly (depending on the value you specify) please keep in mind that every phone is different. You can therefore change \"Reference for noise measurement\" in settings. See http://en.wikipedia.org/wiki/Decibel for more information. You can use the volume tester from the main screen to calibrate your device.
- Hint
- Select noise level
- Location has wifi. Stopping CellLocationListener.
- Location doesn\'t have wifi. Not stopping CellLocationListener.
- Show on map
- No maps application found on your device.
- Location engine not active.
- Add profile
- Profiles
- Profile
- Sound mode
- Volumes
- Tone for incoming calls
- Tone for notifications
- Haptic feedback (vibrate when touching screen)
- Music, video, game and other media
- Ringtone and notifications
- Alarms
- Change
- Audible selection (sound when making screen selection)
- Screen lock/unlock sound
- Vibrate when ringing
- Profiles
+ Alarmas
+ modificar
Normal
- Vibrate
- Silent
+ Vibración
+ Silencio
Enter a name!
No change selected. Profile doesn\'t make sense.
- There are no profiles in your configuration. Create one first.
- Error activating profile:
- There is already another profile by that name.
- Invalid name for profile.
- Error writing settings file.
- Unknown error.
- No writable folder found to store config file.
- This will most likely not work as you\'re above Android 2.3. However you could use wifi tethering instead.
- Using new thread for rule activation.
- Start new thread for rule activation.
- New thread
- Show icon
- Show icon when service is running (works only below Android 7)
- Rule history (most recent first):
- Some options are disabled as they cannot be used, yet. They will be introduced in a later program version.
- Lock sound changes
- Profile will not be activated. Last activated profile was locked.
- Current volume
- Enter a valid reference value.
- Volume test
- To calculate a dB value for noise monitoring you need to specify a so called physical reference value. Please read Wikipedia for further information. This value is most likely different for every phone. Drag the seekbar to change the defined physical reference value. The higher the reference value the lower the dB value will be. Constant measurings will be performed every %1$s seconds and the results displayed below. Press back when you have found a suitable value.
- Some settings will not be applied before certain environment settings change or service is restarted.
- Phone is rooted.
- Phone is not rooted.
- Data connection was successfully changed using superuser permissions.
- Data could not be changed using superuser permissions.
- You need to root your phone for this function to work. Afterwards you needs to \"run the rule manually\" to show up the superuser permission question. When the superuser popups shows up you need to always allow the application to do that. Otherwise the rule cannot function when the phone is unattended.
- Error writing config. Do you have a writable memory?
- I could not insert the last phone nr in the variable. I don\'t have it.
- Username
- Password
- Use authentication
- Required permissions
- Explanation of required permissions
+ Nombre de usuario
Ok
- Disabled features
- The following permissions have been denied:
- The app is current running in limited mode and has deactivated some features. To fully function it requires permissions. If you want to use all functionality you have to grant the permissions in the following rights dialogues. If you do not certain rules can not be executed. In the following you are given an explanation for the requested permissions. Click "continue", when you are ready to proceed.
- To enable the feature you just tried to use more permissions are required. Click continue to request them.
- continue
- Rule
- Read and store settings
- : Features are disabled, Automation is running in limited mode. Click here for more information.
- Green = enabled, red = disabled, yellow = not enough permissions
- The permission to change some OS settings is required (even simple stuff like turn on bluetooth or wifi). After clicking "continue" a window will popup where you need to enable this for Automation. Then hit your "back" key.
- Further permissions will be requested in a second dialog afterwards.
- Automation requires access to external storage to read its settings and rules.
- Automation requires more permissions to fully function. Click on this text to find out more and request them.
- Invalid device
- your app id
- Maximum log file size in Megabyte. Will be rotated if bigger.
- Maximum log file size [Mb]
- Read phone log
- Read calendar entries
- Read exact location
- Read coarse location
- Read location
- Send data over a network connection
- Read device\'s network state
- Read device\'s wifi state
- Change Bluetooth settings
- Change Bluetooth settings
- Use NFC module
- Let phone vibrate
- Keep phone on
- Change audio settings
- Record audio
- Detect outgoing calls
- Change device settings
- Detect phone state
- Read storage
- Write storage
- Detect running processes
- Change device settings
- Detect device reboot
- Change device settings
- Read battery state
- Change data connection
- Send text messages
+ continuar
+ Regla
+ Enviar mensajes SMS
Read contact data
- Override do not disturb policy
- These are the permissions required:
- Rule \"%1$s\" requires this.
- This feature can detect if you\'re currently on the go and if it is on foot or in which type of vehicle (to a certain extent). The feature is not fully built into Automation, but is provided by Google Play Services. Technically it does not give a yes/no result, but return a percentage to which level it is sure it detected you\'re status. You can setup the percentage value from which Automation will accept a result. Two remarks: 1) More than 1 status could occur at the same time. For example you might be WALKING inside a driving bus. 2) This sensor is relative cost intensive. If it is possible you might consider using alternatives, e.g. require your car\'s handsfree device to be connected to detect you\'re driving.
- Send text message
- Text to send
- You can directly enter a phone number. Alternatively use the contacts option to pick one. But keep in mind: The number will be stored here, not the contact. If you change the phone number of a selected contact you\'ll need to update this rule. It doesn\'t do that by itself.
+ Regla \"%1$s\" requires this.
+ Enviar mensaje SMS
Import number from contacts
- If you\'re using the noise level trigger: Unfortunately beginning with Android 9 (Pie) Google decided to disallow background applications to use the microphone. So this trigger has no effect anymore and won\'t trigger anything.
- This message won\'t be shown again.
- In this final selection popup you need to select a specific activity. Simplified this is like a window of the desired application. If you do not know which one it is generally a good idea to pick one that has \"main\" or \"launcher\" in its name.
Edit
- Klicken und halten Sie ein Objekt für Optionen.
+ Texto de enviar
+ Contraseña
+ Monstrar en una mapa
+ Igual
+ Domingo
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 19f37848..09350a00 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -635,7 +635,7 @@
No file manager installed.
Share config and log files with developer (via email).
This will start a new email with your config and log files attached as zip file. It will not be sent automatically, you still need to hit \"send\". You can also change the recipient to yourself for example.
- You can enter an activity path manually, but it\'s recommended to use the \"Select\" button. If you choose to enter something manually keep in mind no variables will be resolved. If you want to start the camera for example \"MediaStore.ACTION_IMAGE_CAPTURE\" will not work. You have to look at the Android documentation and use its value instead which would be \"android.media.action.IMAGE_CAPTURE\".
+ Here you have 2 general options:\n\n1. You can start a program by selecting an activity.\nImagine this like preselecting a specific screen/window of an application. Keep in mind this may not always work. This is because the windows of an app might interact with each other, e.g. pass on parameters. When bluntly starting a specific screen that interaction has not happened and the window might close instantly (therefore it\'s never really shown). Try it nevertheless!\nYou can enter an activity path manually, but it\'s recommended to use the \"Select\" button. If you decide to enter it manually enter the app\'s package name in the upper field and the full path of the activity in the lower one.\n\n2. Selection by action\nIn contrast to selecting a specific window you can also start a program by an action. This is like shouting out \"I\'d would like xyz\" and if there\'s an app installed that can help you with that it will be started. A good example would be start browser - you might even have multiple installed (one is usually the default one).\nYou need to enter this manually, PackageName is optional here. Keep in mind no variables will be resolved. If you want to start the camera for example using \"MediaStore.ACTION_IMAGE_CAPTURE\" will not work. You have to take a look at the Android documentation and use this variable\'s actual value instead which in this example would be \"android.media.action.IMAGE_CAPTURE\".
There was an error running a rule.
Cannot find sound file %1$s and therefore not play it.
Add parameters
@@ -643,4 +643,6 @@
Method to\nselect application
by activity
by action
+ Enter a valid action
+ Enter a valid package name.
\ No newline at end of file