Compare commits
72 Commits
Author | SHA1 | Date | |
---|---|---|---|
4f971e8a1b | |||
34fbc1d005 | |||
b72049defc | |||
54f3cc84c4 | |||
7884358564 | |||
f24c9f99dc | |||
64b97c650d | |||
9daf4c4747 | |||
94f7936c4a | |||
02f7b642cf | |||
8d10bf05af | |||
8c0cee9589 | |||
6b23bd6733 | |||
1a60c88f35 | |||
3312d99177 | |||
ea01806915 | |||
36173f2fcb | |||
4c66fe906e | |||
60cfa150b5 | |||
bd2231b075 | |||
158f5f2e04 | |||
f1315dc742 | |||
28aa0c3e4b | |||
6b9dbca7ab | |||
291e0c41af | |||
c9eedd5d87 | |||
2470321e15 | |||
d85a199117 | |||
b047cde4ea | |||
9a1796f2eb | |||
7e8a6b121e | |||
810c7488c4 | |||
8af24695fd | |||
533a9bf54d | |||
8653e4853b | |||
c464a9d71f | |||
26e4851c0d | |||
11f0ee25bf | |||
a76cafc6e2 | |||
bd2920e6d9 | |||
5caf33b45d | |||
6a74d070eb | |||
eba02ade08 | |||
394effea36 | |||
4d51f1890a | |||
a8b2c3bf7d | |||
d1c6abaa91 | |||
587ed5803e | |||
49d272be1e | |||
d9e54c7780 | |||
170dbbc7e8 | |||
3fc1dd1a26 | |||
0acb52099c | |||
b6015a3f2e | |||
ae1e767fa6 | |||
6e12e71133 | |||
e4e3faea06 | |||
7c42250e13 | |||
ebb0724b28 | |||
a7ae0c6588 | |||
e5433bf2ec | |||
fd8ffd4f7d | |||
f49455712a | |||
132f64114e | |||
27e9b3e0d1 | |||
a6c6dfc6ba | |||
6a7875cc61 | |||
6f80caa1c6 | |||
a9646cbf28 | |||
52edfa32df | |||
ca81e6a7bd | |||
49e4c20ab6 |
@ -11,8 +11,8 @@ android {
|
||||
compileSdkVersion 31
|
||||
buildToolsVersion '29.0.2'
|
||||
useLibrary 'org.apache.http.legacy'
|
||||
versionCode 124
|
||||
versionName "1.7.9"
|
||||
versionCode 136
|
||||
versionName "1.7.19"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
@ -36,9 +36,15 @@ android {
|
||||
{
|
||||
dimension "version"
|
||||
versionNameSuffix "-googlePlay"
|
||||
targetSdkVersion 31
|
||||
targetSdkVersion 33
|
||||
}
|
||||
|
||||
/*
|
||||
targetSdkVersion is kept at 28 for as long as possible.
|
||||
If raised wifi cannot be switched on or off anymore without root permissions.
|
||||
In the Google version I'm forced to raise the value regularly.
|
||||
*/
|
||||
|
||||
fdroidFlavor
|
||||
{
|
||||
dimension "version"
|
||||
|
@ -68,6 +68,8 @@
|
||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
|
||||
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||
<uses-permission android:name="android.permission.READ_CALL_LOG" />
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.telephony"
|
||||
@ -85,7 +87,7 @@
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:allowClearUserData="true"
|
||||
android:icon="@drawable/gears"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme"
|
||||
android:networkSecurityConfig="@xml/network_security_config">
|
||||
@ -176,6 +178,7 @@
|
||||
<activity android:name=".ActivityManageActionMakePhoneCall" />
|
||||
<activity android:name=".ActivityManageActionSetVariable" />
|
||||
<activity android:name=".ActivityManageTriggerCheckVariable" />
|
||||
<activity android:name=".ActivityManageActionCopyToClipboard" />
|
||||
|
||||
<activity
|
||||
android:name=".ActivityMainTabLayout"
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -66,6 +66,8 @@
|
||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
|
||||
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||
<uses-permission android:name="android.permission.READ_CALL_LOG" />
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.telephony"
|
||||
@ -83,7 +85,7 @@
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:allowClearUserData="true"
|
||||
android:icon="@drawable/gears"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme"
|
||||
android:networkSecurityConfig="@xml/network_security_config">
|
||||
@ -171,9 +173,10 @@
|
||||
<activity android:name=".ActivityManageTriggerTethering" />
|
||||
<activity android:name=".ActivityManageActionWakeLock" />
|
||||
<activity android:name=".ActivityManageTriggerSubSystemState" />
|
||||
<activity android:name=".ActivityManageMakePhoneCall" />
|
||||
<activity android:name=".ActivityManageActionMakePhoneCall" />
|
||||
<activity android:name=".ActivityManageActionSetVariable" />
|
||||
<activity android:name=".ActivityManageTriggerCheckVariable" />
|
||||
<activity android:name=".ActivityManageActionCopyToClipboard" />
|
||||
<activity
|
||||
android:name=".ActivityMainTabLayout"
|
||||
android:launchMode="singleTask">
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -64,11 +64,12 @@
|
||||
<uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"/>
|
||||
<uses-permission android:name="com.wireguard.android.permission.CONTROL_TUNNELS"/>
|
||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:allowClearUserData="true"
|
||||
android:icon="@drawable/gears"
|
||||
android:icon="@drawable/crane"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme"
|
||||
android:networkSecurityConfig="@xml/network_security_config">
|
||||
@ -160,6 +161,7 @@
|
||||
<activity android:name=".ActivityManageTriggerSubSystemState" />
|
||||
<activity android:name=".ActivityManageActionSetVariable" />
|
||||
<activity android:name=".ActivityManageTriggerCheckVariable" />
|
||||
<activity android:name=".ActivityManageActionCopyToClipboard" />
|
||||
<activity
|
||||
android:name=".ActivityMainTabLayout"
|
||||
android:exported="true"
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -55,6 +55,7 @@ public class Action
|
||||
setVariable,
|
||||
startPhoneCall,
|
||||
stopPhoneCall,
|
||||
copyToClipboard,
|
||||
sendTextMessage;
|
||||
|
||||
public String getFullName(Context context)
|
||||
@ -137,6 +138,8 @@ public class Action
|
||||
return context.getResources().getString(R.string.startPhoneCall);
|
||||
case stopPhoneCall:
|
||||
return context.getResources().getString(R.string.endPhoneCall);
|
||||
case copyToClipboard:
|
||||
return context.getResources().getString(R.string.copyTextToClipboard);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
@ -302,6 +305,8 @@ public class Action
|
||||
case stopPhoneCall:
|
||||
returnString.append(Miscellaneous.getAnyContext().getResources().getString(R.string.endPhoneCall));
|
||||
break;
|
||||
case copyToClipboard:
|
||||
returnString.append(Miscellaneous.getAnyContext().getResources().getString(R.string.copyTextToClipboard));
|
||||
default:
|
||||
returnString.append(action.toString());
|
||||
}
|
||||
@ -409,7 +414,7 @@ public class Action
|
||||
{
|
||||
returnString.append(": " + parameter2.replace(Action.actionParameter2Split, "; ").replace(Action.intentPairSeparator, "/"));
|
||||
}
|
||||
else if (this.getAction().equals(Action_Enum.setVariable))
|
||||
else if(this.getAction().equals(Action_Enum.setVariable) || this.getAction().equals(Action_Enum.copyToClipboard))
|
||||
; // it's completed further above already
|
||||
else if (parameter2 != null && parameter2.length() > 0)
|
||||
returnString.append(": " + parameter2.replace(Action.actionParameter2Split, "; "));
|
||||
@ -624,6 +629,9 @@ public class Action
|
||||
case stopPhoneCall:
|
||||
Actions.endPhoneCall(context);
|
||||
break;
|
||||
case copyToClipboard:
|
||||
Actions.copyToClipboard(context, Miscellaneous.replaceVariablesInText(this.getParameter2(), context));
|
||||
break;
|
||||
default:
|
||||
Miscellaneous.logEvent("w", "Action", context.getResources().getString(R.string.unknownActionSpecified), 3);
|
||||
break;
|
||||
@ -650,7 +658,7 @@ public class Action
|
||||
password = components[1];
|
||||
url = components[2];
|
||||
}
|
||||
else
|
||||
else // compatibility for very old versions which haven't upgraded, yet.
|
||||
url = components[0];
|
||||
|
||||
try
|
||||
|
@ -10,7 +10,7 @@ import android.bluetooth.BluetoothAdapter;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.bluetooth.BluetoothProfile;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.media.AudioManager;
|
||||
@ -19,7 +19,6 @@ import android.net.ConnectivityManager;
|
||||
import android.net.Uri;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.PowerManager;
|
||||
import android.os.PowerManager.WakeLock;
|
||||
import android.os.VibrationEffect;
|
||||
@ -30,7 +29,6 @@ import android.telecom.TelecomManager;
|
||||
import android.telephony.SmsManager;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.widget.Toast;
|
||||
@ -54,7 +52,6 @@ import org.apache.http.impl.client.DefaultHttpClient;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
@ -97,6 +94,7 @@ public class Actions
|
||||
|
||||
Miscellaneous.logEvent("w", "createNotification", "Creating notification with title " + elements[0] + " and text " + elements[1], 3);
|
||||
|
||||
// Create a new notification ID each time
|
||||
int notificationId = Math.round(Calendar.getInstance().getTimeInMillis()/1000);
|
||||
|
||||
try
|
||||
@ -115,8 +113,8 @@ public class Actions
|
||||
public static void closeNotification(Action action)
|
||||
{
|
||||
NotificationManager nm = (NotificationManager) Miscellaneous.getAnyContext().getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
for(StatusBarNotification n : nm.getActiveNotifications())
|
||||
{
|
||||
// for(StatusBarNotification n : nm.getActiveNotifications())
|
||||
// {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
|
||||
{
|
||||
String[] params = action.getParameter2().split(Action.actionParameter2Split);
|
||||
@ -196,7 +194,7 @@ public class Actions
|
||||
Miscellaneous.logEvent("i", "NotificationCloseCheck", "NotificationListener instance is null. Can\'t close notification.", 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
public static void sendBroadcast(Context context, String action)
|
||||
@ -1049,7 +1047,7 @@ public class Actions
|
||||
|
||||
try
|
||||
{
|
||||
Intent externalActivityIntent;
|
||||
Intent externalApplicationIntent;
|
||||
|
||||
if (!startByAction)
|
||||
{
|
||||
@ -1062,15 +1060,15 @@ public class Actions
|
||||
|
||||
Miscellaneous.logEvent("i", "StartOtherApp", "Starting app by activity: " + packageName + " " + className, 3);
|
||||
|
||||
externalActivityIntent = new Intent(Intent.ACTION_MAIN);
|
||||
externalActivityIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
externalApplicationIntent = new Intent(Intent.ACTION_MAIN);
|
||||
externalApplicationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
|
||||
// if(packageName.equals("dummyPkg"))
|
||||
// externalActivityIntent.setAction(className);
|
||||
// else
|
||||
externalActivityIntent.setClassName(packageName, className);
|
||||
if(packageName.equals("dummyPkg"))
|
||||
externalApplicationIntent.setAction(className);
|
||||
|
||||
if (!Miscellaneous.doesActivityExist(externalActivityIntent, Miscellaneous.getAnyContext()))
|
||||
externalApplicationIntent.setClassName(packageName, className);
|
||||
|
||||
if (!Miscellaneous.doesActivityExist(externalApplicationIntent, Miscellaneous.getAnyContext()))
|
||||
Miscellaneous.logEvent("w", "StartOtherApp", "Activity not found: " + className, 2);
|
||||
}
|
||||
else
|
||||
@ -1078,25 +1076,32 @@ public class Actions
|
||||
// selected by action
|
||||
Miscellaneous.logEvent("i", "StartOtherApp", "Starting app by action: " + param, 3);
|
||||
|
||||
externalActivityIntent = new Intent();
|
||||
externalApplicationIntent = new Intent();
|
||||
|
||||
if (!params[0].equals(dummyPackageString))
|
||||
externalActivityIntent.setPackage(params[0]);
|
||||
externalApplicationIntent.setPackage(params[0]);
|
||||
|
||||
externalActivityIntent.setAction(params[1]);
|
||||
externalApplicationIntent.setAction(params[1]);
|
||||
|
||||
if (params[2].equals(ActivityManageActionStartActivity.startByServiceString) || params[2].equals(ActivityManageActionStartActivity.startByForegroundServiceString))
|
||||
{
|
||||
externalApplicationIntent.setComponent(new ComponentName(params[0], params[2]));
|
||||
}
|
||||
}
|
||||
|
||||
externalActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
externalApplicationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
|
||||
// Pack intents
|
||||
externalActivityIntent = packParametersIntoIntent(externalActivityIntent, params, 3);
|
||||
externalApplicationIntent = packParametersIntoIntent(externalApplicationIntent, params, 3);
|
||||
|
||||
if (params[2].equals(ActivityManageActionStartActivity.startByActivityString))
|
||||
automationServerRef.startActivity(externalActivityIntent);
|
||||
if (params[2].equals(ActivityManageActionStartActivity.startByServiceString))
|
||||
automationServerRef.startService(externalActivityIntent);
|
||||
automationServerRef.startActivity(externalApplicationIntent);
|
||||
else if (params[2].equals(ActivityManageActionStartActivity.startByServiceString))
|
||||
automationServerRef.startService(externalApplicationIntent);
|
||||
else if (params[2].equals(ActivityManageActionStartActivity.startByForegroundServiceString) && Build.VERSION.SDK_INT >= 26)
|
||||
automationServerRef.startForegroundService(externalApplicationIntent);
|
||||
else
|
||||
automationServerRef.sendBroadcast(externalActivityIntent);
|
||||
automationServerRef.sendBroadcast(externalApplicationIntent);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@ -1168,21 +1173,36 @@ public class Actions
|
||||
}
|
||||
else if (singleParam[0].equals("Uri"))
|
||||
{
|
||||
if (singleParam[1].equalsIgnoreCase("IntentData"))
|
||||
try
|
||||
{
|
||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with value " + singleParam[2] + " as standard data parameter.", 3);
|
||||
intent.setData(Uri.parse(singleParam[2]));
|
||||
if (singleParam[1].equalsIgnoreCase("IntentData"))
|
||||
{
|
||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with value " + singleParam[2] + " as standard data parameter.", 3);
|
||||
intent.setData(Uri.parse(Miscellaneous.replaceVariablesInText(singleParam[2], context)));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||
intent.putExtra(singleParam[1], Uri.parse(Miscellaneous.replaceVariablesInText(singleParam[2], context)));
|
||||
}
|
||||
}
|
||||
else
|
||||
catch (Exception e)
|
||||
{
|
||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||
intent.putExtra(singleParam[1], Uri.parse(singleParam[2]));
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
else if (singleParam[0].equals("String"))
|
||||
{
|
||||
Miscellaneous.logEvent("i", "StartOtherApp", "Adding parameter of type " + singleParam[0] + " with name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||
intent.putExtra(singleParam[1], singleParam[2]);
|
||||
try
|
||||
{
|
||||
intent.putExtra(singleParam[1], Miscellaneous.replaceVariablesInText(singleParam[2], context));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
intent.putExtra(singleParam[1], singleParam[2]);
|
||||
}
|
||||
}
|
||||
else
|
||||
Miscellaneous.logEvent("w", "StartOtherApp", "Unknown type of parameter " + singleParam[0] + " found. Name " + singleParam[1] + " and value " + singleParam[2], 3);
|
||||
@ -2261,7 +2281,7 @@ public class Actions
|
||||
|
||||
public static void startPhoneCall(Context context, String phoneNumber)
|
||||
{
|
||||
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));
|
||||
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + Uri.encode(phoneNumber)));
|
||||
// intent.setClassName("com.android.phone","com.android.phone.OutgoingCallBroadcaster");
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.addFlags(Intent.FLAG_FROM_BACKGROUND);
|
||||
@ -2297,4 +2317,21 @@ public class Actions
|
||||
mgr.endCall();
|
||||
}
|
||||
}
|
||||
|
||||
public static void copyToClipboard(Context context, String text)
|
||||
{
|
||||
Miscellaneous.logEvent("i", "Clipboard", "Copying data to clipboard: " + text, 4);
|
||||
|
||||
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB)
|
||||
{
|
||||
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
clipboard.setText(text);
|
||||
}
|
||||
else
|
||||
{
|
||||
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
android.content.ClipData clip = android.content.ClipData.newPlainText("Data-from-Automation", text);
|
||||
clipboard.setPrimaryClip(clip);
|
||||
}
|
||||
}
|
||||
}
|
@ -39,8 +39,10 @@ public class ActivityControlCenter extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_control_center);
|
||||
|
||||
|
||||
bVolumeTest = (Button) findViewById(R.id.bVolumeTest);
|
||||
bVolumeTest.setOnClickListener(new View.OnClickListener()
|
||||
{
|
||||
@ -384,6 +386,7 @@ public class ActivityControlCenter extends Activity
|
||||
protected void onResume()
|
||||
{
|
||||
super.onResume();
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
|
||||
String folder = Miscellaneous.getWriteableFolder();
|
||||
if (folder != null && folder.length() > 0)
|
||||
|
@ -21,6 +21,7 @@ public class ActivityDisplayLongMessage extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_display_long_message);
|
||||
|
||||
tvMessageTitle = (TextView)findViewById(R.id.tvMessageTitle);
|
||||
|
@ -13,7 +13,8 @@ public class ActivityHelp extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(layout.help_text);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(layout.activity_help_text);
|
||||
|
||||
TextView tvHelpTextEnergySaving = (TextView) findViewById(R.id.tvHelpTextEnergySaving);
|
||||
tvHelpTextEnergySaving.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
|
@ -44,6 +44,7 @@ public class ActivityMainPoi extends ActivityGeneric
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.main_poi_layout);
|
||||
|
||||
instance = this;
|
||||
@ -107,6 +108,13 @@ public class ActivityMainPoi extends ActivityGeneric
|
||||
this.storeServiceReferenceInVariable();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume()
|
||||
{
|
||||
super.onResume();
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
}
|
||||
|
||||
private void buttonAddPoi()
|
||||
{
|
||||
poiToEdit = null;
|
||||
|
@ -40,6 +40,7 @@ public class ActivityMainProfiles extends ActivityGeneric
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.main_profile_layout);
|
||||
|
||||
instance = this;
|
||||
@ -154,6 +155,13 @@ public class ActivityMainProfiles extends ActivityGeneric
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume()
|
||||
{
|
||||
super.onResume();
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
}
|
||||
|
||||
private AlertDialog getProfileDialog(final Profile profile)
|
||||
{
|
||||
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
|
||||
|
@ -47,7 +47,8 @@ public class ActivityMainRules extends ActivityGeneric
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.main_rule_layout);
|
||||
|
||||
instance = this;
|
||||
@ -153,6 +154,13 @@ public class ActivityMainRules extends ActivityGeneric
|
||||
return v;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume()
|
||||
{
|
||||
super.onResume();
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data)
|
||||
|
@ -6,9 +6,12 @@ import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
@ -31,6 +34,7 @@ import com.jens.automation2.location.LocationProvider;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Locale;
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
public class ActivityMainScreen extends ActivityGeneric
|
||||
@ -51,6 +55,7 @@ public class ActivityMainScreen extends ActivityGeneric
|
||||
public void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.main_overview_layout);
|
||||
|
||||
activityMainScreenInstance = this;
|
||||
@ -429,7 +434,7 @@ public class ActivityMainScreen extends ActivityGeneric
|
||||
else
|
||||
activityMainScreenInstance.checkForNews();
|
||||
|
||||
if(BuildConfig.FLAVOR.equals("apkFlavor") && Settings.automaticUpdateCheck)
|
||||
if(BuildConfig.FLAVOR.equals(AutomationService.flavor_name_apk) && Settings.automaticUpdateCheck)
|
||||
{
|
||||
Calendar now = Calendar.getInstance();
|
||||
if (Settings.lastUpdateCheck == Settings.default_lastUpdateCheck || now.getTimeInMillis() >= Settings.lastUpdateCheck + (long)(Settings.updateCheckFrequencyDays * 24 * 60 * 60 * 1000))
|
||||
@ -566,6 +571,7 @@ public class ActivityMainScreen extends ActivityGeneric
|
||||
protected void onResume()
|
||||
{
|
||||
super.onResume();
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
toggleService.setChecked(AutomationService.isMyServiceRunning(this));
|
||||
ActivityMainScreen.updateMainScreen();
|
||||
|
||||
|
@ -3,12 +3,17 @@ package com.jens.automation2;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.TabActivity;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.widget.TabHost;
|
||||
import android.widget.TabHost.TabSpec;
|
||||
|
||||
import com.jens.automation2.receivers.NfcReceiver;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
public class ActivityMainTabLayout extends TabActivity
|
||||
@ -17,8 +22,8 @@ public class ActivityMainTabLayout extends TabActivity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
Settings.readFromPersistentStorage(ActivityMainTabLayout.this);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
|
||||
if(Settings.tabsPlacement == 1)
|
||||
setContentView(R.layout.main_tab_layout_tabs_at_bottom);
|
||||
@ -60,6 +65,7 @@ public class ActivityMainTabLayout extends TabActivity
|
||||
protected void onResume()
|
||||
{
|
||||
super.onResume();
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
// Miscellaneous.logEvent("i", "NFC", "ActivityMainTabLayout.onResume().", 5);
|
||||
NfcReceiver.checkIntentForNFC(this, getIntent());
|
||||
// NfcReceiver.checkIntentForNFC(this, new Intent(this.getApplicationContext(), this.getClass()));
|
||||
|
@ -26,6 +26,7 @@ public class ActivityManageActionBrightnessSetting extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
setContentView(R.layout.activity_manage_action_brightness_settings);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
chkAutoBrightness = (CheckBox)findViewById(R.id.chkAutoBrightness);
|
||||
|
@ -259,6 +259,7 @@ public class ActivityManageActionCloseNotification extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_action_close_notification);
|
||||
|
||||
etNotificationTitle = (EditText)findViewById(R.id.etNotificationTitle);
|
||||
|
@ -19,6 +19,7 @@ public class ActivityManageActionControlMedia extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_action_control_media);
|
||||
|
||||
rbMediaPlayPause = (RadioButton)findViewById(R.id.rbMediaPlayPause);
|
||||
|
@ -0,0 +1,53 @@
|
||||
package com.jens.automation2;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
public class ActivityManageActionCopyToClipboard extends Activity
|
||||
{
|
||||
private Button bSaveCopyToClipboard;
|
||||
private EditText etCopyToClipboard;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
this.setContentView(R.layout.activity_manage_action_copy_to_clipboard);
|
||||
|
||||
bSaveCopyToClipboard = (Button) findViewById(R.id.bSaveCopyToClipboard);
|
||||
etCopyToClipboard = (EditText)findViewById(R.id.etCopyToClipboard);
|
||||
|
||||
bSaveCopyToClipboard.setOnClickListener(new View.OnClickListener()
|
||||
{
|
||||
@Override
|
||||
public void onClick(View v)
|
||||
{
|
||||
if(StringUtils.isEmpty(etCopyToClipboard.getText().toString()))
|
||||
{
|
||||
Toast.makeText(ActivityManageActionCopyToClipboard.this, getResources().getString(R.string.enterText), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
else
|
||||
{
|
||||
Intent response = new Intent();
|
||||
response.putExtra(ActivityManageRule.intentNameActionParameter2, etCopyToClipboard.getText().toString());
|
||||
setResult(RESULT_OK, response);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if(getIntent().hasExtra(ActivityManageRule.intentNameActionParameter2))
|
||||
{
|
||||
String text = getIntent().getStringExtra(ActivityManageRule.intentNameActionParameter2);
|
||||
etCopyToClipboard.setText(text);
|
||||
}
|
||||
}
|
||||
}
|
@ -24,6 +24,7 @@ public class ActivityManageActionCreateNotification extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_action_create_notification);
|
||||
|
||||
etNotificationTitle = (EditText) findViewById(R.id.etNotificationTitle);
|
||||
|
@ -21,6 +21,7 @@ public class ActivityManageActionMakePhoneCall extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_action_make_phone_call);
|
||||
|
||||
etTargetPhoneNumber = (EditText)findViewById(R.id.etTargetPhoneNumber);
|
||||
|
@ -26,6 +26,7 @@ public class ActivityManageActionPlaySound extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_action_play_sound);
|
||||
|
||||
chkPlaySoundAlwaysPlay = (CheckBox)findViewById(R.id.chkPlaySoundAlwaysPlay);
|
||||
|
@ -28,6 +28,7 @@ public class ActivityManageActionRunExecutable extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_action_run_executable);
|
||||
|
||||
chkRunExecAsRoot = (CheckBox)findViewById(R.id.chkRunExecAsRoot);
|
||||
@ -57,6 +58,15 @@ public class ActivityManageActionRunExecutable extends Activity
|
||||
saveExecSettings();
|
||||
}
|
||||
});
|
||||
|
||||
if(getIntent().hasExtra(ActivityManageRule.intentNameActionParameter2))
|
||||
{
|
||||
String[] parts = getIntent().getStringExtra(ActivityManageRule.intentNameActionParameter2).split(Action.actionParameter2Split);
|
||||
etRunExecutablePath.setText(parts[0]);
|
||||
|
||||
if(parts.length > 1)
|
||||
etRunExecutableParameters.setText(parts[1]);
|
||||
}
|
||||
}
|
||||
|
||||
void saveExecSettings()
|
||||
|
@ -37,6 +37,7 @@ public class ActivityManageActionSendBroadcast extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_action_send_broadcast);
|
||||
|
||||
etBroadcastToSend = (EditText)findViewById(R.id.etBroadcastToSend);
|
||||
@ -225,7 +226,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
|
||||
|
@ -48,6 +48,7 @@ public class ActivityManageActionSendTextMessage extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
this.setContentView(R.layout.activity_manage_action_send_textmessage);
|
||||
|
||||
etSendTextMessage = (EditText)findViewById(R.id.etSendTextMessage);
|
||||
|
@ -24,6 +24,7 @@ public class ActivityManageActionSetVariable extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
this.setContentView(R.layout.activity_manage_action_set_variable);
|
||||
|
||||
etVariableSetKey = (EditText)findViewById(R.id.etVariableSetKey);
|
||||
@ -61,4 +62,4 @@ public class ActivityManageActionSetVariable extends Activity
|
||||
etVariableSetValue.setText(input[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -22,6 +22,7 @@ public class ActivityManageActionSpeakText extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
this.setContentView(R.layout.activity_manage_action_speak_text);
|
||||
|
||||
etSpeakText = (EditText)findViewById(R.id.etTextToSpeak);
|
||||
|
@ -29,6 +29,7 @@ import android.widget.CompoundButton;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ListView;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.RadioGroup;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.Toast;
|
||||
|
||||
@ -48,17 +49,19 @@ public class ActivityManageActionStartActivity extends Activity
|
||||
*/
|
||||
|
||||
ListView lvIntentPairs;
|
||||
EditText etParameterName, etParameterValue, etPackageName, etActivityOrActionPath;
|
||||
EditText etParameterName, etParameterValue, etPackageName, etActivityOrActionPath, etClassName;
|
||||
Button bSelectApp, bAddIntentPair, bSaveActionStartOtherActivity, showStartProgramExamples;
|
||||
Spinner spinnerParameterType;
|
||||
RadioGroup rgAppStartupType;
|
||||
boolean edit = false;
|
||||
ProgressDialog progressDialog = null;
|
||||
RadioButton rbStartAppSelectByActivity, rbStartAppSelectByAction, rbStartAppByActivity, rbStartAppByBroadcast, rbStartAppByService;
|
||||
RadioButton rbStartAppSelectByActivity, rbStartAppSelectByAction, rbStartAppByActivity, rbStartAppByBroadcast, rbStartAppByService, rbStartAppByForegroundService;
|
||||
|
||||
final String urlShowExamples = "https://server47.de/automation/examples_startProgram.html";
|
||||
final static String startByActivityString = "0";
|
||||
final static String startByBroadcastString = "1";
|
||||
final static String startByServiceString = "2";
|
||||
final static String startByForegroundServiceString = "3";
|
||||
|
||||
final static int requestCodeForRequestQueryAllPackagesPermission = 4711;
|
||||
|
||||
@ -66,11 +69,13 @@ public class ActivityManageActionStartActivity extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_action_start_activity);
|
||||
|
||||
lvIntentPairs = (ListView)findViewById(R.id.lvIntentPairs);
|
||||
etParameterName = (EditText)findViewById(R.id.etParameterName);
|
||||
etParameterValue = (EditText)findViewById(R.id.etParameterValue);
|
||||
etClassName = (EditText)findViewById(R.id.etClassName);
|
||||
bSelectApp = (Button)findViewById(R.id.bSelectApp);
|
||||
bAddIntentPair = (Button)findViewById(R.id.bAddIntentPair);
|
||||
bSaveActionStartOtherActivity = (Button)findViewById(R.id.bSaveActionStartOtherActivity);
|
||||
@ -83,13 +88,16 @@ public class ActivityManageActionStartActivity extends Activity
|
||||
rbStartAppByActivity = (RadioButton)findViewById(R.id.rbStartAppByActivity);
|
||||
rbStartAppByBroadcast = (RadioButton)findViewById(R.id.rbStartAppByBroadcast);
|
||||
rbStartAppByService = (RadioButton)findViewById(R.id.rbStartAppByService);
|
||||
rbStartAppByForegroundService = (RadioButton)findViewById(R.id.rbStartAppByForegroundService);
|
||||
rgAppStartupType = (RadioGroup)findViewById(R.id.rgAppStartupType);
|
||||
|
||||
intentTypeSpinnerAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, ActivityManageActionStartActivity.supportedIntentTypes);
|
||||
spinnerParameterType.setAdapter(intentTypeSpinnerAdapter);
|
||||
intentTypeSpinnerAdapter.notifyDataSetChanged();
|
||||
|
||||
intentPairAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, intentPairList);
|
||||
etClassName.setEnabled(false);
|
||||
|
||||
intentPairAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, intentPairList);
|
||||
bSelectApp.setOnClickListener(new OnClickListener()
|
||||
{
|
||||
@Override
|
||||
@ -227,17 +235,23 @@ public class ActivityManageActionStartActivity extends Activity
|
||||
|
||||
if (rbStartAppSelectByActivity.isChecked())
|
||||
parameter2 += etPackageName.getText().toString() + ";" + etActivityOrActionPath.getText().toString();
|
||||
else {
|
||||
else
|
||||
{
|
||||
if (etPackageName.getText().toString() != null && etPackageName.getText().toString().length() > 0)
|
||||
parameter2 += etPackageName.getText().toString() + ";" + etActivityOrActionPath.getText().toString();
|
||||
else
|
||||
parameter2 += Actions.dummyPackageString + ";" + etActivityOrActionPath.getText().toString();
|
||||
|
||||
// if(etClassName.getText().toString().length() > 0)
|
||||
parameter2 += ";" + etClassName.getText().toString();
|
||||
}
|
||||
|
||||
if (rbStartAppByActivity.isChecked())
|
||||
parameter2 += ";" + startByActivityString;
|
||||
else if(rbStartAppByService.isChecked())
|
||||
parameter2 += ";" + startByServiceString;
|
||||
else if(rbStartAppByForegroundService.isChecked())
|
||||
parameter2 += ";" + startByForegroundServiceString;
|
||||
else
|
||||
parameter2 += ";" + startByBroadcastString;
|
||||
|
||||
@ -268,7 +282,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
|
||||
@ -289,7 +303,9 @@ public class ActivityManageActionStartActivity extends Activity
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
|
||||
{
|
||||
if(isChecked)
|
||||
{
|
||||
bSelectApp.setEnabled(isChecked);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -303,6 +319,23 @@ public class ActivityManageActionStartActivity extends Activity
|
||||
}
|
||||
});
|
||||
|
||||
rgAppStartupType.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
|
||||
{
|
||||
@Override
|
||||
public void onCheckedChanged(RadioGroup radioGroup, int i)
|
||||
{
|
||||
if(rbStartAppByActivity.isChecked())
|
||||
etClassName.setEnabled(false);
|
||||
else if (rbStartAppByBroadcast.isChecked())
|
||||
etClassName.setEnabled(false);
|
||||
else if(rbStartAppByService.isChecked())
|
||||
etClassName.setEnabled(true);
|
||||
else if(rbStartAppByForegroundService.isChecked())
|
||||
etClassName.setEnabled(true);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Intent i = getIntent();
|
||||
if(i.hasExtra(ActivityManageRule.intentNameActionParameter1))
|
||||
loadValuesIntoGui(i);
|
||||
@ -597,9 +630,19 @@ public class ActivityManageActionStartActivity extends Activity
|
||||
|
||||
String[] params = input.getStringExtra(ActivityManageRule.intentNameActionParameter2).split(";");
|
||||
|
||||
rbStartAppByActivity.setChecked(params[2].equals(startByActivityString));
|
||||
rbStartAppByBroadcast.setChecked(params[2].equals(startByBroadcastString));
|
||||
rbStartAppByService.setChecked(params[2].equals(startByServiceString));
|
||||
if(Miscellaneous.isNumeric(params[2])) // old configuration file
|
||||
{
|
||||
rbStartAppByActivity.setChecked(params[2].equals(startByActivityString));
|
||||
rbStartAppByBroadcast.setChecked(params[2].equals(startByBroadcastString));
|
||||
rbStartAppByService.setChecked(params[2].equals(startByServiceString));
|
||||
}
|
||||
else
|
||||
{
|
||||
rbStartAppByActivity.setChecked(params[3].equals(startByActivityString));
|
||||
rbStartAppByBroadcast.setChecked(params[3].equals(startByBroadcastString));
|
||||
rbStartAppByService.setChecked(params[3].equals(startByServiceString));
|
||||
rbStartAppByForegroundService.setChecked(params[3].equals(startByForegroundServiceString));
|
||||
}
|
||||
|
||||
int startIndex = -1;
|
||||
|
||||
@ -614,10 +657,11 @@ public class ActivityManageActionStartActivity extends Activity
|
||||
etPackageName.setText(params[0]);
|
||||
|
||||
etActivityOrActionPath.setText(params[1]);
|
||||
etClassName.setText(params[2]);
|
||||
}
|
||||
|
||||
if (params.length >= 3)
|
||||
startIndex = 3;
|
||||
if (params.length >= 4)
|
||||
startIndex = 4;
|
||||
|
||||
if(startIndex > -1 && params.length > startIndex)
|
||||
{
|
||||
|
@ -39,6 +39,7 @@ public class ActivityManageActionTriggerUrl extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
this.setContentView(R.layout.activity_manage_action_trigger_url);
|
||||
|
||||
etTriggerUrl = (EditText)findViewById(R.id.etTriggerUrl);
|
||||
|
@ -27,6 +27,7 @@ public class ActivityManageActionVibrate extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_action_vibrate);
|
||||
|
||||
etVibratePattern = (EditText)findViewById(R.id.etVibratePattern);
|
||||
|
@ -27,6 +27,7 @@ public class ActivityManageActionWakeLock extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_action_wakelock);
|
||||
|
||||
rbWakeLockActivate = (RadioButton)findViewById(R.id.rbWakeLockActivate);
|
||||
|
@ -23,6 +23,7 @@ public class ActivityManageActionWifi extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_action_wifi);
|
||||
|
||||
chkWifiRunAsRoot = (CheckBox)findViewById(R.id.chkWifiRunAsRoot);
|
||||
|
@ -59,6 +59,7 @@ public class ActivityManagePoi extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
this.setContentView(R.layout.activity_manage_specific_poi);
|
||||
|
||||
myLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
|
||||
|
@ -86,6 +86,7 @@ public class ActivityManageProfile extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
this.setContentView(R.layout.activity_manage_specific_profile);
|
||||
|
||||
checkBoxChangeSoundMode = (CheckBox)findViewById(R.id.checkBoxChangeSoundMode);
|
||||
|
@ -139,6 +139,8 @@ public class ActivityManageRule extends Activity
|
||||
final static int requestCodeActionSetVariableEdit = 826;
|
||||
final static int requestCodeTriggerCheckVariableAdd = 827;
|
||||
final static int requestCodeTriggerCheckVariableEdit = 828;
|
||||
final static int requestCodeActionCopyTextToClipboardAdd = 829;
|
||||
final static int requestCodeActionCopyTextToClipboardEdit = 830;
|
||||
|
||||
public static ActivityManageRule getInstance()
|
||||
{
|
||||
@ -152,6 +154,7 @@ public class ActivityManageRule extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_specific_rule);
|
||||
|
||||
context = this;
|
||||
@ -469,6 +472,12 @@ public class ActivityManageRule extends Activity
|
||||
actionPlaySoundIntent.putExtra(intentNameActionParameter2, a.getParameter2());
|
||||
startActivityForResult(actionPlaySoundIntent, requestCodeActionPlaySoundEdit);
|
||||
break;
|
||||
case copyToClipboard:
|
||||
Intent actionCopyToClipboardIntent = new Intent(context, ActivityManageActionCopyToClipboard.class);
|
||||
actionCopyToClipboardIntent.putExtra(intentNameActionParameter1, a.getParameter1());
|
||||
actionCopyToClipboardIntent.putExtra(intentNameActionParameter2, a.getParameter2());
|
||||
startActivityForResult(actionCopyToClipboardIntent, requestCodeActionCopyTextToClipboardEdit);
|
||||
break;
|
||||
default:
|
||||
Miscellaneous.logEvent("w", "Edit action", "Editing of action type " + a.getAction().toString() + " not implemented, yet.", 4);
|
||||
break;
|
||||
@ -1764,7 +1773,7 @@ public class ActivityManageRule extends Activity
|
||||
{
|
||||
ruleToEdit.getActionSet().get(editIndex).setParentRule(ruleToEdit);
|
||||
|
||||
if(data.hasExtra(intentNameActionParameter1) && data.hasExtra(intentNameActionParameter2))
|
||||
if(data.hasExtra(intentNameActionParameter2))
|
||||
{
|
||||
ruleToEdit.getActionSet().get(editIndex).setParameter2(data.getStringExtra(intentNameActionParameter2));
|
||||
}
|
||||
@ -2016,6 +2025,31 @@ public class ActivityManageRule extends Activity
|
||||
this.refreshTriggerList();
|
||||
}
|
||||
}
|
||||
else if(requestCode == requestCodeActionCopyTextToClipboardAdd)
|
||||
{
|
||||
if(resultCode == RESULT_OK)
|
||||
{
|
||||
newAction.setParentRule(ruleToEdit);
|
||||
newAction.setParameter1(data.getBooleanExtra(intentNameActionParameter1, false));
|
||||
newAction.setParameter2(data.getStringExtra(intentNameActionParameter2));
|
||||
ruleToEdit.getActionSet().add(newAction);
|
||||
this.refreshActionList();
|
||||
}
|
||||
}
|
||||
else if(requestCode == requestCodeActionCopyTextToClipboardEdit)
|
||||
{
|
||||
if(resultCode == RESULT_OK)
|
||||
{
|
||||
ruleToEdit.getActionSet().get(editIndex).setParentRule(ruleToEdit);
|
||||
|
||||
if(data.hasExtra(intentNameActionParameter2))
|
||||
{
|
||||
ruleToEdit.getActionSet().get(editIndex).setParameter2(data.getStringExtra(intentNameActionParameter2));
|
||||
}
|
||||
|
||||
this.refreshActionList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected AlertDialog getActionTypeDialog()
|
||||
@ -2090,6 +2124,8 @@ public class ActivityManageRule extends Activity
|
||||
if(ActivityPermissions.isPermissionDeclaratedInManifest(ActivityManageRule.this, Manifest.permission.SEND_SMS))
|
||||
items.add(new Item(typesLong[i].toString(), R.drawable.message));
|
||||
}
|
||||
else if(types[i].toString().equals(Action_Enum.copyToClipboard.toString()))
|
||||
items.add(new Item(typesLong[i].toString(), R.drawable.clipboard));
|
||||
else
|
||||
items.add(new Item(typesLong[i].toString(), R.drawable.placeholder));
|
||||
}
|
||||
@ -2310,6 +2346,12 @@ public class ActivityManageRule extends Activity
|
||||
Intent actionPlaySoundIntent = new Intent(context, ActivityManageActionPlaySound.class);
|
||||
startActivityForResult(actionPlaySoundIntent, requestCodeActionPlaySoundAdd);
|
||||
}
|
||||
else if(Action.getActionTypesAsArray()[which].toString().equals(Action_Enum.copyToClipboard.toString()))
|
||||
{
|
||||
newAction.setAction(Action_Enum.copyToClipboard);
|
||||
Intent intent = new Intent(ActivityManageRule.this, ActivityManageActionCopyToClipboard.class);
|
||||
startActivityForResult(intent, requestCodeActionCopyTextToClipboardAdd);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -32,6 +32,7 @@ public class ActivityManageTriggerBluetooth extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_bluetooth);
|
||||
|
||||
radioAnyBluetoothDevice = (RadioButton)findViewById(R.id.radioAnyBluetoothDevice);
|
||||
|
@ -28,6 +28,7 @@ public class ActivityManageTriggerBroadcast extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_broadcasts);
|
||||
|
||||
bBroadcastShowSuggestions = findViewById(R.id.bBroadcastShowSuggestions);
|
||||
|
@ -20,6 +20,7 @@ public class ActivityManageTriggerCheckVariable extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_check_variable);
|
||||
|
||||
etVariableKeyTrigger = (EditText) findViewById(R.id.etVariableKeyTrigger);
|
||||
|
@ -104,6 +104,7 @@ public class ActivityManageTriggerDeviceOrientation extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_device_orientation);
|
||||
|
||||
currentAzimuth = (TextView) findViewById(R.id.tvCurrentAzimuth);
|
||||
|
@ -39,6 +39,7 @@ public class ActivityManageTriggerNfc extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_nfc);
|
||||
|
||||
etNewNfcIdValue = (EditText)findViewById(R.id.etNewNfcIdValue);
|
||||
|
@ -258,6 +258,7 @@ public class ActivityManageTriggerNotification extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_notification);
|
||||
|
||||
etNotificationTitle = (EditText)findViewById(R.id.etNotificationTitle);
|
||||
|
@ -35,6 +35,7 @@ public class ActivityManageTriggerPhoneCall extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_phone_call);
|
||||
|
||||
etTriggerPhoneCallPhoneNumber = (EditText)findViewById(R.id.etTriggerPhoneCallPhoneNumber);
|
||||
|
@ -31,6 +31,7 @@ public class ActivityManageTriggerProfile extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_profile);
|
||||
|
||||
bSaveTriggerProfile = (Button)findViewById(R.id.bSaveTriggerProfile);
|
||||
|
@ -21,6 +21,7 @@ public class ActivityManageTriggerSubSystemState extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_subsystemstate);
|
||||
|
||||
rbSubSystemStateWifi = (RadioButton)findViewById(R.id.rbSubSystemStateWifi);
|
||||
|
@ -26,6 +26,7 @@ public class ActivityManageTriggerTethering extends Activity
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_tethering);
|
||||
|
||||
rbTetheringOn = (RadioButton) findViewById(R.id.rbTetheringOn);
|
||||
|
@ -35,6 +35,7 @@ public class ActivityManageTriggerTimeFrame extends Activity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_timeframe);
|
||||
|
||||
startPicker = (TimePicker)findViewById(R.id.tpTimeFrameStart);
|
||||
|
@ -12,11 +12,15 @@ import android.net.wifi.WifiConfiguration;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.EditText;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.Spinner;
|
||||
@ -43,12 +47,13 @@ public class ActivityManageTriggerWifi extends Activity
|
||||
List<String> wifiList = new ArrayList<>();
|
||||
ArrayAdapter<String> wifiSpinnerAdapter;
|
||||
private final static int requestCodeLocationPermission = 124;
|
||||
TextView tvWifiTriggerNameLocationNotice;
|
||||
TextView tvWifiTriggerNameLocationNotice, tvWifiTriggerDisconnectionHint;
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_manage_trigger_wifi);
|
||||
|
||||
rbTriggerWifiConnected = (RadioButton) findViewById(R.id.rbTriggerWifiConnected);
|
||||
@ -58,6 +63,9 @@ public class ActivityManageTriggerWifi extends Activity
|
||||
bTriggerWifiSave = (Button) findViewById(R.id.bTriggerWifiSave);
|
||||
bLoadWifiList = (Button) findViewById(R.id.bLoadWifiList);
|
||||
tvWifiTriggerNameLocationNotice = (TextView)findViewById(R.id.tvWifiTriggerNameLocationNotice);
|
||||
tvWifiTriggerDisconnectionHint = (TextView)findViewById(R.id.tvWifiTriggerDisconnectionHint);
|
||||
|
||||
tvWifiTriggerDisconnectionHint.setVisibility(View.GONE);
|
||||
|
||||
wifiSpinnerAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, wifiList);
|
||||
spinnerWifiList.setAdapter(wifiSpinnerAdapter);
|
||||
@ -100,6 +108,11 @@ public class ActivityManageTriggerWifi extends Activity
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
|
||||
{
|
||||
etTriggerWifiName.setText(wifiList.get(position));
|
||||
|
||||
if(etTriggerWifiName.getText().toString().length() > 0 && rbTriggerWifiDisconnected.isChecked())
|
||||
tvWifiTriggerDisconnectionHint.setVisibility(View.VISIBLE);
|
||||
else
|
||||
tvWifiTriggerDisconnectionHint.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -117,6 +130,41 @@ public class ActivityManageTriggerWifi extends Activity
|
||||
loadWifis();
|
||||
}
|
||||
});
|
||||
|
||||
rbTriggerWifiDisconnected.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
|
||||
{
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b)
|
||||
{
|
||||
if(etTriggerWifiName.getText().toString().length() > 0 && b)
|
||||
tvWifiTriggerDisconnectionHint.setVisibility(View.VISIBLE);
|
||||
else
|
||||
tvWifiTriggerDisconnectionHint.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
etTriggerWifiName.addTextChangedListener(new TextWatcher()
|
||||
{
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
|
||||
{
|
||||
if(etTriggerWifiName.getText().toString().length() > 0 && rbTriggerWifiDisconnected.isChecked())
|
||||
tvWifiTriggerDisconnectionHint.setVisibility(View.VISIBLE);
|
||||
else
|
||||
tvWifiTriggerDisconnectionHint.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable editable)
|
||||
{
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void loadWifis()
|
||||
|
@ -25,6 +25,8 @@ import android.widget.TextView;
|
||||
|
||||
import com.jens.automation2.receivers.NotificationListener;
|
||||
|
||||
import org.w3c.dom.DOMImplementationSource;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
@ -47,6 +49,8 @@ public class ActivityPermissions extends Activity
|
||||
private static final int requestCodeForPermissionsNotifications = 12046;
|
||||
private static final int requestCodeForPermissionsDeviceAdmin = 12047;
|
||||
private static final int requestCodeForPermissionsBatteryOptimization = 12048;
|
||||
private static final int requestCodeForPermissionNotificationAccessAndroid13 = 12049;
|
||||
private static final int requestCodeForPermissionsManageOverlay = 12050;
|
||||
protected String[] specificPermissionsToRequest = null;
|
||||
|
||||
public static String intentExtraName = "permissionsToBeRequested";
|
||||
@ -75,6 +79,7 @@ public class ActivityPermissions extends Activity
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.permissions_activity);
|
||||
|
||||
bCancelPermissions = (Button)findViewById(R.id.bCancelPermissions);
|
||||
@ -258,8 +263,7 @@ public class ActivityPermissions extends Activity
|
||||
if (!havePermission(s, context))
|
||||
return true;
|
||||
}
|
||||
else
|
||||
if (!havePermission(s, context))
|
||||
else if (!havePermission(s, context))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -297,6 +301,10 @@ public class ActivityPermissions extends Activity
|
||||
String packageName = context.getApplicationContext().getPackageName();
|
||||
return pm.isIgnoringBatteryOptimizations(packageName);
|
||||
}
|
||||
else if (s.equals(Manifest.permission.SYSTEM_ALERT_WINDOW))
|
||||
{
|
||||
return android.provider.Settings.canDrawOverlays(Miscellaneous.getAnyContext());
|
||||
}
|
||||
else
|
||||
{
|
||||
int res = context.checkCallingOrSelfPermission(s);
|
||||
@ -315,6 +323,11 @@ public class ActivityPermissions extends Activity
|
||||
return active;
|
||||
}
|
||||
|
||||
public static void requestOverlay()
|
||||
{
|
||||
Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
|
||||
ActivityPermissions.getInstance().startActivityForResult(intent, requestCodeForPermissionsManageOverlay);
|
||||
}
|
||||
public static void requestDeviceAdmin()
|
||||
{
|
||||
if(!haveDeviceAdmin())
|
||||
@ -443,7 +456,8 @@ public class ActivityPermissions extends Activity
|
||||
{
|
||||
case activityDetection:
|
||||
addToArrayListUnique(permissionNameGoogleActivityDetection, requiredPermissions);
|
||||
addToArrayListUnique(Manifest.permission.ACTIVITY_RECOGNITION, requiredPermissions);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
|
||||
addToArrayListUnique(Manifest.permission.ACTIVITY_RECOGNITION, requiredPermissions);
|
||||
break;
|
||||
case airplaneMode:
|
||||
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
|
||||
@ -473,6 +487,7 @@ public class ActivityPermissions extends Activity
|
||||
case phoneCall:
|
||||
addToArrayListUnique(Manifest.permission.READ_PHONE_STATE, requiredPermissions);
|
||||
addToArrayListUnique(Manifest.permission.PROCESS_OUTGOING_CALLS, requiredPermissions);
|
||||
addToArrayListUnique(Manifest.permission.READ_CALL_LOG, requiredPermissions);
|
||||
break;
|
||||
case pointOfInterest:
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
|
||||
@ -514,9 +529,13 @@ public class ActivityPermissions extends Activity
|
||||
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
|
||||
addToArrayListUnique(Manifest.permission.ACCESS_WIFI_STATE, requiredPermissions);
|
||||
if(
|
||||
(
|
||||
Miscellaneous.getTargetSDK(Miscellaneous.getAnyContext()) >= 29
|
||||
&&
|
||||
isPermissionDeclaratedInManifest(Miscellaneous.getAnyContext(), Manifest.permission.ACCESS_BACKGROUND_LOCATION)
|
||||
)
|
||||
||
|
||||
Build.VERSION.SDK_INT >= 33
|
||||
)
|
||||
addToArrayListUnique(Manifest.permission.ACCESS_BACKGROUND_LOCATION, requiredPermissions);
|
||||
break;
|
||||
@ -630,6 +649,8 @@ public class ActivityPermissions extends Activity
|
||||
// action.getParameter2().contains("eu.faircode.netguard.STOP_PORT_FORWARD")
|
||||
// )
|
||||
// addToArrayListUnique("net.kollnig.missioncontrol.permission.ADMIN", requiredPermissions);
|
||||
if(Build.VERSION.SDK_INT >= 29)
|
||||
addToArrayListUnique(Manifest.permission.SYSTEM_ALERT_WINDOW, requiredPermissions);
|
||||
break;
|
||||
case triggerUrl:
|
||||
addToArrayListUnique(Manifest.permission.INTERNET, requiredPermissions);
|
||||
@ -685,7 +706,7 @@ public class ActivityPermissions extends Activity
|
||||
break;
|
||||
case startPhoneCall:
|
||||
addToArrayListUnique(Manifest.permission.CALL_PHONE, requiredPermissions);
|
||||
// addToArrayListUnique(Manifest.permission.SYSTEM_ALERT_WINDOW, requiredPermissions);
|
||||
addToArrayListUnique(Manifest.permission.SYSTEM_ALERT_WINDOW, requiredPermissions);
|
||||
break;
|
||||
case stopPhoneCall:
|
||||
addToArrayListUnique(Manifest.permission.ANSWER_PHONE_CALLS, requiredPermissions);
|
||||
@ -755,11 +776,10 @@ public class ActivityPermissions extends Activity
|
||||
case Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE:
|
||||
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.notification))
|
||||
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
|
||||
break;
|
||||
case permissionNameGoogleActivityDetection:
|
||||
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.activityDetection))
|
||||
for(String ruleName : getRulesUsing(Action.Action_Enum.closeNotification))
|
||||
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
|
||||
break;
|
||||
case permissionNameGoogleActivityDetection:
|
||||
case Manifest.permission.ACTIVITY_RECOGNITION:
|
||||
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.activityDetection))
|
||||
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
|
||||
@ -774,6 +794,7 @@ public class ActivityPermissions extends Activity
|
||||
break;
|
||||
case Manifest.permission.ACCESS_BACKGROUND_LOCATION:
|
||||
usingElements.add(getResources().getString(R.string.googleLocationChicanery));
|
||||
usingElements.add(getResources().getString(R.string.wifiMonitoringAlsoRequiresThis));
|
||||
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.pointOfInterest))
|
||||
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
|
||||
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.speed))
|
||||
@ -858,6 +879,7 @@ public class ActivityPermissions extends Activity
|
||||
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
|
||||
break;
|
||||
case Manifest.permission.PROCESS_OUTGOING_CALLS:
|
||||
case Manifest.permission.READ_CALL_LOG:
|
||||
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.phoneCall))
|
||||
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
|
||||
break;
|
||||
@ -885,6 +907,12 @@ public class ActivityPermissions extends Activity
|
||||
for(String ruleName : getRulesUsing(Action.Action_Enum.startPhoneCall))
|
||||
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
|
||||
break;
|
||||
case Manifest.permission.SYSTEM_ALERT_WINDOW:
|
||||
for(String ruleName : getRulesUsing(Action.Action_Enum.startOtherActivity))
|
||||
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
|
||||
for(String ruleName : getRulesUsing(Action.Action_Enum.startPhoneCall))
|
||||
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
|
||||
break;
|
||||
case Manifest.permission.ANSWER_PHONE_CALLS:
|
||||
for(String ruleName : getRulesUsing(Action.Action_Enum.stopPhoneCall))
|
||||
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
|
||||
@ -983,6 +1011,10 @@ public class ActivityPermissions extends Activity
|
||||
if (requestCode == requestCodeForPermissionsBatteryOptimization)
|
||||
if(havePermission(Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, ActivityPermissions.this))
|
||||
requestPermissions(cachedPermissionsToRequest, true);
|
||||
|
||||
if (requestCode == requestCodeForPermissionsManageOverlay)
|
||||
if(havePermission(Manifest.permission.SYSTEM_ALERT_WINDOW, ActivityPermissions.this))
|
||||
requestPermissions(cachedPermissionsToRequest, true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1033,7 +1065,7 @@ public class ActivityPermissions extends Activity
|
||||
startActivityForResult(intent, requestCodeForPermissionsWriteSettings);
|
||||
return;
|
||||
}
|
||||
if (s.equalsIgnoreCase(Manifest.permission.BIND_DEVICE_ADMIN))
|
||||
else if (s.equalsIgnoreCase(Manifest.permission.BIND_DEVICE_ADMIN))
|
||||
{
|
||||
requiredPermissions.remove(s);
|
||||
cachedPermissionsToRequest = requiredPermissions;
|
||||
@ -1048,12 +1080,46 @@ public class ActivityPermissions extends Activity
|
||||
startActivityForResult(intent, requestCodeForPermissionsNotificationPolicy);
|
||||
return;
|
||||
}
|
||||
else if (s.equalsIgnoreCase(Manifest.permission.SYSTEM_ALERT_WINDOW))
|
||||
{
|
||||
AlertDialog diag = Miscellaneous.messageBox(getResources().getString(R.string.info), getResources().getString(R.string.overlayPermissionHint), ActivityPermissions.this);
|
||||
diag.setOnDismissListener(new DialogInterface.OnDismissListener()
|
||||
{
|
||||
@Override
|
||||
public void onDismiss(DialogInterface dialogInterface)
|
||||
{
|
||||
requiredPermissions.remove(s);
|
||||
cachedPermissionsToRequest = requiredPermissions;
|
||||
requestOverlay();
|
||||
}
|
||||
});
|
||||
diag.show();
|
||||
return;
|
||||
}
|
||||
else if (s.equalsIgnoreCase(Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE))
|
||||
{
|
||||
requiredPermissions.remove(s);
|
||||
cachedPermissionsToRequest = requiredPermissions;
|
||||
Intent intent = new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
|
||||
startActivityForResult(intent, requestCodeForPermissionsNotifications);
|
||||
if(Build.VERSION.SDK_INT >= 33)
|
||||
{
|
||||
AlertDialog dialog = Miscellaneous.messageBox(getResources().getString(R.string.info), getResources().getString(R.string.notificationAccessAndroid13), ActivityPermissions.this);
|
||||
dialog.setOnDismissListener(new DialogInterface.OnDismissListener()
|
||||
{
|
||||
@Override
|
||||
public void onDismiss(DialogInterface dialogInterface)
|
||||
{
|
||||
requiredPermissions.remove(s);
|
||||
cachedPermissionsToRequest = requiredPermissions;
|
||||
requestNotificationAccess();
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
}
|
||||
else
|
||||
{
|
||||
requiredPermissions.remove(s);
|
||||
cachedPermissionsToRequest = requiredPermissions;
|
||||
requestNotificationAccess();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else if(s.equals(Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS))
|
||||
@ -1128,6 +1194,12 @@ public class ActivityPermissions extends Activity
|
||||
}
|
||||
}
|
||||
|
||||
void requestNotificationAccess()
|
||||
{
|
||||
Intent intent = new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
|
||||
startActivityForResult(intent, requestCodeForPermissionsNotifications);
|
||||
}
|
||||
|
||||
protected void applyChanges()
|
||||
{
|
||||
AutomationService service = AutomationService.getInstance();
|
||||
|
@ -16,6 +16,7 @@ public class ActivitySettings extends PreferenceActivity
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
addPreferencesFromResource(layout.activity_settings);
|
||||
|
||||
if(BuildConfig.FLAVOR.equals(AutomationService.flavor_name_apk))
|
||||
@ -24,4 +25,11 @@ public class ActivitySettings extends PreferenceActivity
|
||||
chkPrefUpdateCheck.setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume()
|
||||
{
|
||||
super.onResume();
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
}
|
||||
}
|
@ -30,6 +30,7 @@ public class ActivityVolumeTest extends Activity
|
||||
instance = this;
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
Miscellaneous.setDisplayLanguage(this);
|
||||
setContentView(R.layout.activity_volume_calibration);
|
||||
|
||||
tvCurrentVolume = (TextView)findViewById(R.id.tvCurrentVolume);
|
||||
|
@ -4,7 +4,6 @@ import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
|
||||
public class AsyncTasks
|
||||
|
@ -34,13 +34,14 @@ 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;
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
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 +98,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;
|
||||
@ -120,6 +126,8 @@ public class AutomationService extends Service implements OnInitListener
|
||||
|
||||
// Store a reference to myself. Other classes often need a context or something, this can provide that.
|
||||
centralInstance = this;
|
||||
|
||||
Miscellaneous.setDisplayLanguage(AutomationService.this);
|
||||
}
|
||||
|
||||
public boolean checkStartupRequirements(Context context, boolean startAtBoot)
|
||||
@ -226,7 +234,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 +315,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 +325,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();
|
||||
@ -490,7 +518,12 @@ public class AutomationService extends Service implements OnInitListener
|
||||
builder.setContentTitle("Automation");
|
||||
|
||||
if(Settings.showIconWhenServiceIsRunning)
|
||||
builder.setSmallIcon(R.drawable.ic_launcher);
|
||||
{
|
||||
if(BuildConfig.FLAVOR.equalsIgnoreCase(AutomationService.flavor_name_googleplay))
|
||||
builder.setSmallIcon(R.drawable.crane);
|
||||
else
|
||||
builder.setSmallIcon(R.drawable.ic_launcher);
|
||||
}
|
||||
|
||||
builder.setCategory(Notification.CATEGORY_SERVICE);
|
||||
builder.setWhen(System.currentTimeMillis());
|
||||
@ -498,7 +531,7 @@ public class AutomationService extends Service implements OnInitListener
|
||||
|
||||
Notification defaultNotification = builder.build();
|
||||
|
||||
defaultNotification.icon = R.drawable.ic_launcher;
|
||||
defaultNotification.icon = R.drawable.crane;
|
||||
defaultNotification.when = System.currentTimeMillis();
|
||||
|
||||
// defaultNotification.defaults |= Notification.DEFAULT_VIBRATE;
|
||||
@ -545,7 +578,12 @@ public class AutomationService extends Service implements OnInitListener
|
||||
builder.setOnlyAlertOnce(true);
|
||||
|
||||
if(Settings.showIconWhenServiceIsRunning)
|
||||
builder.setSmallIcon(R.drawable.ic_launcher);
|
||||
{
|
||||
if (BuildConfig.FLAVOR.equals(AutomationService.flavor_name_googleplay))
|
||||
builder.setSmallIcon(R.drawable.crane);
|
||||
else
|
||||
builder.setSmallIcon(R.drawable.ic_launcher);
|
||||
}
|
||||
|
||||
// builder.setContentText(textToDisplay);
|
||||
// builder.setSmallIcon(icon);
|
||||
@ -671,25 +709,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)
|
||||
{
|
||||
|
@ -15,6 +15,7 @@ import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.database.Cursor;
|
||||
import android.media.AudioAttributes;
|
||||
import android.media.RingtoneManager;
|
||||
@ -31,6 +32,7 @@ import android.provider.Settings.Secure;
|
||||
import android.telephony.PhoneNumberUtils;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Base64;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
@ -68,6 +70,7 @@ import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.StringReader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.lang.Thread.UncaughtExceptionHandler;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
@ -75,6 +78,8 @@ import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.DigestInputStream;
|
||||
import java.security.KeyManagementException;
|
||||
import java.security.KeyStore;
|
||||
@ -111,6 +116,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 +280,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 +564,10 @@ public class Miscellaneous extends Service
|
||||
returnContext = ActivityPermissions.getInstance().getApplicationContext();
|
||||
if(returnContext != null)
|
||||
return returnContext;
|
||||
|
||||
|
||||
if(startupContext != null)
|
||||
return startupContext;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -609,10 +619,12 @@ public class Miscellaneous extends Service
|
||||
}
|
||||
|
||||
if(source.contains("[serialnr]"))
|
||||
if(Build.VERSION.SDK_INT > 8)
|
||||
{
|
||||
if (Build.VERSION.SDK_INT > 8)
|
||||
source = source.replace("[serialnr]", Secure.getString(context.getContentResolver(), Build.SERIAL));
|
||||
else
|
||||
source = source.replace("[serialnr]", "serialUnknown");
|
||||
}
|
||||
|
||||
if(
|
||||
source.contains("[d]") ||
|
||||
@ -683,7 +695,7 @@ public class Miscellaneous extends Service
|
||||
if(result.length() < 2)
|
||||
result = "0" + result;
|
||||
|
||||
source = source.replace("[s]", String.valueOf(cal.get(Calendar.SECOND)));
|
||||
source = source.replace("[s]", result);
|
||||
}
|
||||
|
||||
if(source.contains("[ms]"))
|
||||
@ -699,7 +711,7 @@ public class Miscellaneous extends Service
|
||||
String notificationTitle = NotificationListener.getLastNotification().getTitle();
|
||||
|
||||
if (notificationTitle != null && notificationTitle.length() > 0)
|
||||
source = source.replace("[notificationTitle]", notificationTitle);
|
||||
source = source.replace("[notificationTitle]", escapeStringForUrl(notificationTitle));
|
||||
else
|
||||
{
|
||||
source = source.replace("[notificationTitle]", "notificationTitle unknown");
|
||||
@ -720,7 +732,7 @@ public class Miscellaneous extends Service
|
||||
String notificationText = NotificationListener.getLastNotification().getText();
|
||||
|
||||
if (notificationText != null && notificationText.length() > 0)
|
||||
source = source.replace("[notificationText]", notificationText);
|
||||
source = source.replace("[notificationText]", escapeStringForUrl(notificationText));
|
||||
else
|
||||
{
|
||||
source = source.replace("[notificationText]", "notificationText unknown");
|
||||
@ -733,6 +745,26 @@ public class Miscellaneous extends Service
|
||||
Miscellaneous.logEvent("w", "Variable replacement", "lastNotification was empty.", 3);
|
||||
}
|
||||
}
|
||||
|
||||
while(source.contains("[variable-"))
|
||||
{
|
||||
int pos1 = source.indexOf("[variable-");
|
||||
int pos2 = source.indexOf("]", pos1);
|
||||
|
||||
int posA = pos1 + "[variable-".length();
|
||||
int posB = source.indexOf("]", posA);
|
||||
|
||||
String variableName = source.substring(posA, posB);
|
||||
|
||||
String replacement;
|
||||
|
||||
if(AutomationService.getInstance().variableMap.containsKey(variableName))
|
||||
replacement = AutomationService.getInstance().variableMap.get(variableName);
|
||||
else
|
||||
replacement = "unknownVariable";
|
||||
|
||||
source = source.substring(0, pos1) + escapeStringForUrl(replacement) + source.substring(pos2 +1);
|
||||
}
|
||||
|
||||
// Miscellaneous.logEvent("i", "URL after replace", source);
|
||||
|
||||
@ -1135,7 +1167,12 @@ public class Miscellaneous extends Service
|
||||
builder.setOnlyAlertOnce(true);
|
||||
|
||||
if(Settings.showIconWhenServiceIsRunning && notificationChannelId.equals(AutomationService.NOTIFICATION_CHANNEL_ID_SERVICE))
|
||||
builder.setSmallIcon(R.drawable.ic_launcher);
|
||||
{
|
||||
if(BuildConfig.FLAVOR.equals(AutomationService.flavor_name_googleplay))
|
||||
builder.setSmallIcon(R.drawable.crane);
|
||||
else
|
||||
builder.setSmallIcon(R.drawable.ic_launcher);
|
||||
}
|
||||
else if(!notificationChannelId.equals(AutomationService.NOTIFICATION_CHANNEL_ID_SERVICE))
|
||||
builder.setSmallIcon(R.drawable.info);
|
||||
|
||||
@ -1980,4 +2017,53 @@ public class Miscellaneous extends Service
|
||||
{
|
||||
return context.getApplicationContext().getApplicationInfo().targetSdkVersion;
|
||||
}
|
||||
|
||||
public static void setDisplayLanguage(Context context)
|
||||
{
|
||||
if(!Settings.displayLanguage.equals(Settings.default_displayLanguage))
|
||||
{
|
||||
Locale myLocale;
|
||||
|
||||
if(Settings.displayLanguage.contains("_"))
|
||||
{
|
||||
String[] parts = Settings.displayLanguage.split("_");
|
||||
myLocale = new Locale(parts[0], parts[1]);
|
||||
}
|
||||
else
|
||||
myLocale = new Locale(Settings.displayLanguage);
|
||||
|
||||
Resources res = context.getResources();
|
||||
DisplayMetrics dm = res.getDisplayMetrics();
|
||||
Configuration conf = res.getConfiguration();
|
||||
conf.locale = myLocale;
|
||||
res.updateConfiguration(conf, dm);
|
||||
//Intent refresh = new Intent(this, AndroidLocalize.class);
|
||||
//finish();
|
||||
//startActivity(refresh);
|
||||
}
|
||||
}
|
||||
|
||||
public static String escapeStringForUrl(String input)
|
||||
{
|
||||
String output;
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
|
||||
{
|
||||
try
|
||||
{
|
||||
output = URLEncoder.encode(input, String.valueOf(StandardCharsets.UTF_8));
|
||||
}
|
||||
catch (UnsupportedEncodingException e)
|
||||
{
|
||||
Miscellaneous.logEvent("e", "URLEncoder", "Error encoding string for URL. Leaving as it is. Error details: " + Log.getStackTraceString(e), 3);
|
||||
output = input;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
output = Uri.encode(input);
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
}
|
@ -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();
|
||||
|
@ -391,11 +391,11 @@ public class ReceiverCoordinator
|
||||
}
|
||||
}
|
||||
|
||||
if(Rule.isAnyRuleUsing(Trigger.Trigger_Enum.headsetPlugged))
|
||||
if(Rule.isAnyRuleUsing(Trigger.Trigger_Enum.headsetPlugged))
|
||||
{
|
||||
if(!HeadphoneJackListener.isHeadphoneJackListenerActive())
|
||||
{
|
||||
Miscellaneous.logEvent("i", "LocationProvider", "Starting HeadphoneJackListener because used in a new/changed rule.", 4);
|
||||
Miscellaneous.logEvent("i", "HeadphoneJackListener", "Starting HeadphoneJackListener because used in a new/changed rule.", 4);
|
||||
if(HeadphoneJackListener.getInstance().haveAllPermission())
|
||||
HeadphoneJackListener.getInstance().startListener(AutomationService.getInstance());
|
||||
}
|
||||
@ -404,7 +404,7 @@ public class ReceiverCoordinator
|
||||
{
|
||||
if(HeadphoneJackListener.isHeadphoneJackListenerActive())
|
||||
{
|
||||
Miscellaneous.logEvent("i", "LocationProvider", "Shutting down HeadphoneJackListener because not used in any rule.", 4);
|
||||
Miscellaneous.logEvent("i", "HeadphoneJackListener", "Shutting down HeadphoneJackListener because not used in any rule.", 4);
|
||||
HeadphoneJackListener.getInstance().stopListener(AutomationService.getInstance());
|
||||
}
|
||||
}
|
||||
|
@ -65,8 +65,10 @@ 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;
|
||||
public static String displayLanguage;
|
||||
|
||||
public static boolean lockSoundChanges;
|
||||
public static boolean noticeAndroid9MicrophoneShown;
|
||||
@ -130,11 +132,14 @@ 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;
|
||||
public static final long default_lastUpdateCheck = -1;
|
||||
public static final long default_musicCheckFrequency = 2500;
|
||||
public static final String default_displayLanguage = "systemDefaultLanguage";
|
||||
|
||||
@Override
|
||||
public boolean contains(String arg0)
|
||||
@ -270,6 +275,7 @@ public class Settings implements SharedPreferences
|
||||
tabsPlacement = Integer.parseInt(prefs.getString("tabsPlacement", String.valueOf(default_tabsPlacement)));
|
||||
|
||||
musicCheckFrequency = Long.parseLong(prefs.getString("musicCheckFrequency", String.valueOf(default_musicCheckFrequency)));
|
||||
displayLanguage = prefs.getString("displayLanguage", default_displayLanguage);
|
||||
|
||||
if(Settings.musicCheckFrequency == 0)
|
||||
Settings.musicCheckFrequency = Settings.default_musicCheckFrequency;
|
||||
@ -277,6 +283,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,9 +479,15 @@ 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);
|
||||
|
||||
if(!prefs.contains("displayLanguage") || force)
|
||||
editor.putString("displayLanguage", default_displayLanguage);
|
||||
|
||||
if(!prefs.contains("lockSoundChanges") || force)
|
||||
editor.putBoolean("lockSoundChanges", default_lockSoundChanges);
|
||||
|
||||
@ -555,11 +568,14 @@ 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;
|
||||
editor.putString("musicCheckFrequency", String.valueOf(musicCheckFrequency));
|
||||
|
||||
editor.putString("displayLanguage", displayLanguage);
|
||||
|
||||
editor.putBoolean("lockSoundChanges", lockSoundChanges);
|
||||
editor.putBoolean("noticeAndroid9MicrophoneShown", noticeAndroid9MicrophoneShown);
|
||||
editor.putBoolean("noticeAndroid10WifiShown", noticeAndroid10WifiShown);
|
||||
|
@ -803,13 +803,29 @@ public class Trigger
|
||||
{
|
||||
Miscellaneous.logEvent("i", Miscellaneous.getAnyContext().getResources().getString(R.string.ruleCheckOf), String.format("Wifi name specified, checking that.", this.getParentRule().getName()), 4);
|
||||
|
||||
if(!WifiBroadcastReceiver.getLastWifiSsid().equals(this.getTriggerParameter2()) && !(Miscellaneous.isRegularExpression(this.getTriggerParameter2()) && WifiBroadcastReceiver.getLastWifiSsid().matches(this.getTriggerParameter2())))
|
||||
if(WifiBroadcastReceiver.lastConnectedState) //when connected
|
||||
{
|
||||
Miscellaneous.logEvent("i", Miscellaneous.getAnyContext().getResources().getString(R.string.ruleCheckOf), String.format(String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.ruleDoesntApplyNotTheCorrectSsid), getParentRule().getName(), this.getTriggerParameter2(), WifiBroadcastReceiver.getLastWifiSsid()),this.getParentRule().getName()), 3);
|
||||
return false;
|
||||
if (!WifiBroadcastReceiver.getLastWifiSsid().equals(this.getTriggerParameter2()) && !(Miscellaneous.isRegularExpression(this.getTriggerParameter2()) && WifiBroadcastReceiver.getLastWifiSsid().matches(this.getTriggerParameter2())))
|
||||
{
|
||||
Miscellaneous.logEvent("i", Miscellaneous.getAnyContext().getResources().getString(R.string.ruleCheckOf), String.format(String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.ruleDoesntApplyNotTheCorrectSsid), getParentRule().getName(), this.getTriggerParameter2(), WifiBroadcastReceiver.getLastWifiSsid()), this.getParentRule().getName()), 3);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
Miscellaneous.logEvent("i", Miscellaneous.getAnyContext().getResources().getString(R.string.ruleCheckOf), String.format("Wifi name matches. Rule will apply.", this.getParentRule().getName()), 4);
|
||||
}
|
||||
else
|
||||
Miscellaneous.logEvent("i", Miscellaneous.getAnyContext().getResources().getString(R.string.ruleCheckOf), String.format("Wifi name matches. Rule will apply.", this.getParentRule().getName()), 4);
|
||||
{
|
||||
if (
|
||||
!Settings.serviceStartDone
|
||||
||
|
||||
(!WifiBroadcastReceiver.getLastWifiSsidReal().equals(this.getTriggerParameter2()) && !(Miscellaneous.isRegularExpression(this.getTriggerParameter2()) && WifiBroadcastReceiver.getLastWifiSsidReal().matches(this.getTriggerParameter2()))))
|
||||
{
|
||||
Miscellaneous.logEvent("i", Miscellaneous.getAnyContext().getResources().getString(R.string.ruleCheckOf), String.format(String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.ruleDoesntApplyNotTheCorrectSsid), getParentRule().getName(), this.getTriggerParameter2(), WifiBroadcastReceiver.getLastWifiSsidReal()), this.getParentRule().getName()), 3);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
Miscellaneous.logEvent("i", Miscellaneous.getAnyContext().getResources().getString(R.string.ruleCheckOf), String.format("Wifi name matches. Rule will apply.", this.getParentRule().getName()), 4);
|
||||
}
|
||||
}
|
||||
else
|
||||
Miscellaneous.logEvent("i", Miscellaneous.getAnyContext().getResources().getString(R.string.ruleCheckOf), String.format("No wifi name specified, any will do.", this.getParentRule().getName()), 4);
|
||||
|
@ -400,12 +400,12 @@ public class LocationProvider
|
||||
Miscellaneous.logEvent("i", "LocationProvider", this.getParentService().getResources().getString(R.string.applyingSettingsAndRules), 3);
|
||||
|
||||
// *********** SETTING CHANGES ***********
|
||||
if(Settings.useWifiForPositioning && !WifiBroadcastReceiver.isWifiListenerActive())
|
||||
if(Settings.useWifiForPositioning && !WifiBroadcastReceiver.isWifiListenerActive() || Rule.isAnyRuleUsing(Trigger_Enum.wifiConnection))
|
||||
{
|
||||
Miscellaneous.logEvent("i", "LocationProvider", "Starting WifiReceiver because settings now allow to.", 4);
|
||||
WifiBroadcastReceiver.startWifiReceiver(this);
|
||||
}
|
||||
else if(!Settings.useWifiForPositioning && WifiBroadcastReceiver.isWifiListenerActive())
|
||||
else if(!Settings.useWifiForPositioning && WifiBroadcastReceiver.isWifiListenerActive() && !Rule.isAnyRuleUsing(Trigger_Enum.wifiConnection))
|
||||
{
|
||||
Miscellaneous.logEvent("i", "LocationProvider", "Shutting down WifiReceiver because settings forbid to.", 4);
|
||||
WifiBroadcastReceiver.stopWifiReceiver();
|
||||
|
@ -25,12 +25,20 @@ public class WifiBroadcastReceiver extends BroadcastReceiver
|
||||
public static LocationProvider parentLocationProvider;
|
||||
public static Boolean wasConnected = false;
|
||||
protected static String lastWifiSsid = "";
|
||||
protected static String lastWifiSsidReal = "";
|
||||
public static boolean lastConnectedState = false;
|
||||
protected static boolean mayCellLocationChangedReceiverBeActivatedFromWifiPointOfView = true;
|
||||
protected static WifiBroadcastReceiver wifiBrInstance;
|
||||
protected static IntentFilter wifiListenerIntentFilter;
|
||||
protected static boolean wifiListenerActive=false;
|
||||
|
||||
final static String unknownSsidName = "<unknown ssid>";
|
||||
|
||||
public static String getLastWifiSsidReal()
|
||||
{
|
||||
return lastWifiSsidReal;
|
||||
}
|
||||
|
||||
public static String getLastWifiSsid()
|
||||
{
|
||||
return lastWifiSsid;
|
||||
@ -42,7 +50,11 @@ public class WifiBroadcastReceiver extends BroadcastReceiver
|
||||
newWifiSsid = newWifiSsid.substring(1, newWifiSsid.length()-1);
|
||||
|
||||
if(newWifiSsid.length() > 0)
|
||||
{
|
||||
if(newWifiSsid.equals(unknownSsidName))
|
||||
WifiBroadcastReceiver.lastWifiSsidReal = lastWifiSsid;
|
||||
WifiBroadcastReceiver.lastWifiSsid = newWifiSsid;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isWifiListenerActive()
|
||||
|
@ -32,21 +32,21 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
if(!batteryReceiverActive)
|
||||
{
|
||||
BatteryReceiver.automationServiceRef = automationServiceRef;
|
||||
|
||||
|
||||
if(batteryInfoReceiverInstance == null)
|
||||
batteryInfoReceiverInstance = new BatteryReceiver();
|
||||
|
||||
|
||||
if(batteryIntentFilter == null)
|
||||
{
|
||||
batteryIntentFilter = new IntentFilter();
|
||||
batteryIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
|
||||
batteryIntentFilter.addAction(Intent.ACTION_BATTERY_LOW);
|
||||
// batteryIntentFilter.addAction(Intent.ACTION_POWER_CONNECTED);
|
||||
// batteryIntentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED);
|
||||
// batteryIntentFilter.addAction(Intent.ACTION_POWER_CONNECTED);
|
||||
// batteryIntentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED);
|
||||
}
|
||||
|
||||
|
||||
batteryStatus = automationServiceRef.registerReceiver(batteryInfoReceiverInstance, batteryIntentFilter);
|
||||
|
||||
|
||||
batteryReceiverActive = true;
|
||||
}
|
||||
}
|
||||
@ -59,16 +59,16 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
automationServiceRef.unregisterReceiver(batteryInfoReceiverInstance);
|
||||
batteryInfoReceiverInstance = null;
|
||||
}
|
||||
|
||||
|
||||
batteryReceiverActive = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static boolean isBatteryReceiverActive()
|
||||
{
|
||||
return batteryReceiverActive;
|
||||
}
|
||||
|
||||
|
||||
public static boolean isUsbHostConnected()
|
||||
{
|
||||
return usbHostConnected;
|
||||
@ -80,7 +80,7 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
}
|
||||
|
||||
private static int currentChargingState = 0; //0=unknown, 1=no, 2=yes
|
||||
|
||||
|
||||
public static int getCurrentChargingState()
|
||||
{
|
||||
return currentChargingState;
|
||||
@ -90,11 +90,11 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
public void onReceive(Context context, Intent intent)
|
||||
{
|
||||
Miscellaneous.logEvent("i", "BatteryReceiver", "Received event " + intent.getAction(), 5);
|
||||
|
||||
|
||||
if (intent == null)
|
||||
return;
|
||||
if (context == null)
|
||||
return;
|
||||
return;
|
||||
|
||||
if(intent.getAction().equals(Intent.ACTION_BATTERY_LOW))
|
||||
{
|
||||
@ -105,12 +105,12 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
try
|
||||
{
|
||||
batteryLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
|
||||
// int scale = -1;
|
||||
// int voltage = -1;
|
||||
// int temp = -1;
|
||||
// scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
|
||||
// temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
|
||||
// voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
|
||||
// int scale = -1;
|
||||
// int voltage = -1;
|
||||
// int temp = -1;
|
||||
// scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
|
||||
// temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
|
||||
// voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
|
||||
Log.i("Battery", "Level: " + String.valueOf(batteryLevel));
|
||||
this.actionBatteryLevel(context);
|
||||
|
||||
@ -121,7 +121,7 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
switch(statusPlugged)
|
||||
{
|
||||
case BatteryManager.BATTERY_PLUGGED_AC:
|
||||
// Toast.makeText(context, "Regular charging", Toast.LENGTH_LONG).show();
|
||||
// Toast.makeText(context, "Regular charging", Toast.LENGTH_LONG).show();
|
||||
Miscellaneous.logEvent("i", "BatteryReceiver", "Regular charging.", 5);
|
||||
this.actionCharging(context);
|
||||
break;
|
||||
@ -138,6 +138,7 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
this.actionCharging(context);
|
||||
break;
|
||||
case BatteryManager.BATTERY_STATUS_DISCHARGING:
|
||||
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
|
||||
this.actionDischarging(context);
|
||||
break;
|
||||
}
|
||||
@ -148,7 +149,7 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static int isDeviceCharging(Context context)
|
||||
{
|
||||
switch(currentChargingState)
|
||||
@ -163,10 +164,10 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
Miscellaneous.logEvent("i", "ChargingInfo", "Status of device charging was requested. Device is charging.", 3);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
return currentChargingState;
|
||||
}
|
||||
|
||||
|
||||
private void actionCharging(Context context)
|
||||
{
|
||||
if(currentChargingState != BatteryManager.BATTERY_STATUS_CHARGING) // Avoid flooding the log. This event will occur on a regular basis even though charging state wasn't changed.
|
||||
@ -183,7 +184,7 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void actionBatteryLevel(Context context)
|
||||
{
|
||||
Miscellaneous.logEvent("i", "BatteryReceiver", "Battery level has changed.", 3);
|
||||
@ -195,7 +196,7 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
ruleCandidates.get(i).activate(automationServiceRef, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void actionDischarging(Context context)
|
||||
{
|
||||
if(currentChargingState != BatteryManager.BATTERY_STATUS_UNKNOWN) // Avoid flooding the log. This event will occur on a regular basis even though charging state wasn't changed.
|
||||
@ -210,22 +211,22 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
if(ruleCandidates.get(i).getsGreenLight(context))
|
||||
ruleCandidates.get(i).activate(automationServiceRef, false);
|
||||
}
|
||||
|
||||
|
||||
this.actionUsbDisconnected(context);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void actionUsbConnected(Context context)
|
||||
{
|
||||
// Event usbConnected
|
||||
|
||||
|
||||
// Miscellaneous.logEvent("i", "BatteryReceiver", "BATTERY_PLUGGED_USB");
|
||||
|
||||
|
||||
if(!usbHostConnected)
|
||||
{
|
||||
usbHostConnected = true;
|
||||
Miscellaneous.logEvent("i", "BatteryReceiver", "Connected to computer.", 3);
|
||||
Toast.makeText(context, "Connected to computer.", Toast.LENGTH_LONG).show();
|
||||
// Toast.makeText(context, "Connected to computer.", Toast.LENGTH_LONG).show();
|
||||
|
||||
ArrayList<Rule> ruleCandidates = Rule.findRuleCandidates(Trigger_Enum.usb_host_connection);
|
||||
// ArrayList<Rule> ruleCandidates = Rule.findRuleCandidatesByUsbHost(true);
|
||||
@ -234,20 +235,20 @@ public class BatteryReceiver extends BroadcastReceiver implements AutomationList
|
||||
if(oneRule.getsGreenLight(context))
|
||||
oneRule.activate(automationServiceRef, false);
|
||||
}
|
||||
|
||||
|
||||
this.actionCharging(context);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void actionUsbDisconnected(Context context)
|
||||
{
|
||||
// Event usbDisConnected
|
||||
|
||||
|
||||
if(usbHostConnected)
|
||||
{
|
||||
usbHostConnected = false;
|
||||
Miscellaneous.logEvent("i", "BatteryReceiver", "Disconnected from computer.", 3);
|
||||
Toast.makeText(context, "Disconnected from computer.", Toast.LENGTH_LONG).show();
|
||||
// Toast.makeText(context, "Disconnected from computer.", Toast.LENGTH_LONG).show();
|
||||
|
||||
ArrayList<Rule> ruleCandidates = Rule.findRuleCandidates(Trigger_Enum.usb_host_connection);
|
||||
// ArrayList<Rule> ruleCandidates = Rule.findRuleCandidatesByUsbHost(false);
|
||||
|
@ -94,20 +94,21 @@ public class BluetoothReceiver extends BroadcastReceiver implements AutomationLi
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent)
|
||||
{
|
||||
// Miscellaneous.logEvent("i", "BluetoothReceiver", "Bluetooth event.", 4);
|
||||
|
||||
String action = intent.getAction();
|
||||
|
||||
Miscellaneous.logEvent("i", "BluetoothReceiver", "Bluetooth event: " + action, 5);
|
||||
|
||||
BluetoothDevice bluetoothDevice = null;
|
||||
|
||||
if(action.equals(BluetoothDevice.ACTION_ACL_CONNECTED) | action.equals("android.bluetooth.device.action.ACL_CONNECTED"))
|
||||
{
|
||||
if(action.equals(BluetoothDevice.ACTION_ACL_CONNECTED) || action.equals("android.bluetooth.device.action.ACL_CONNECTED"))
|
||||
{
|
||||
bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
||||
lastAffectedDevice = bluetoothDevice;
|
||||
lastAction = action;
|
||||
connectedDevices.add(bluetoothDevice);
|
||||
Miscellaneous.logEvent("i", "BluetoothReceiver", String.format(context.getResources().getString(R.string.bluetoothConnectionTo), bluetoothDevice.getName()), 3);
|
||||
}
|
||||
else if(action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED) | action.equals(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED) | action.equals("android.bluetooth.device.ACTION_ACL_DISCONNECTED") | action.equals("android.bluetooth.device.ACTION_ACL_DISCONNECT_REQUESTED"))
|
||||
else if(action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED) || action.equals(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED) || action.equals("android.bluetooth.device.ACTION_ACL_DISCONNECTED") || action.equals("android.bluetooth.device.ACTION_ACL_DISCONNECT_REQUESTED"))
|
||||
{
|
||||
bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
||||
lastAffectedDevice = bluetoothDevice;
|
||||
@ -115,7 +116,7 @@ public class BluetoothReceiver extends BroadcastReceiver implements AutomationLi
|
||||
connectedDevices.remove(bluetoothDevice);
|
||||
Miscellaneous.logEvent("i", "BluetoothReceiver", String.format(context.getResources().getString(R.string.bluetoothDisconnectFrom), bluetoothDevice.getName()), 3);
|
||||
}
|
||||
else if(action.equals(BluetoothDevice.ACTION_FOUND) | action.equals("android.bluetooth.device.ACTION_FOUND"))
|
||||
else if(action.equals(BluetoothDevice.ACTION_FOUND) || action.equals("android.bluetooth.device.ACTION_FOUND"))
|
||||
{
|
||||
bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
|
||||
lastAffectedDevice = bluetoothDevice;
|
||||
|
@ -20,7 +20,7 @@ public class HeadphoneJackListener extends BroadcastReceiver implements Automati
|
||||
private static boolean headsetConnected = false;
|
||||
private static int headphoneType = -1;
|
||||
|
||||
protected static boolean headphoneJackListenerActive=false;
|
||||
protected static boolean headphoneJackListenerActive = false;
|
||||
protected static IntentFilter headphoneJackListenerIntentFilter = null;
|
||||
protected static HeadphoneJackListener instance;
|
||||
|
||||
@ -108,7 +108,7 @@ public class HeadphoneJackListener extends BroadcastReceiver implements Automati
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
Miscellaneous.logEvent("e", "ActivityDetectionReceiver", "Error starting HeadsetJackListener: " + Log.getStackTraceString(ex), 3);
|
||||
Miscellaneous.logEvent("e", "HeadsetJackListener", "Error starting HeadsetJackListener: " + Log.getStackTraceString(ex), 3);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,11 +3,9 @@ package com.jens.automation2.receivers;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Notification;
|
||||
import android.app.PendingIntent;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcelable;
|
||||
import android.service.notification.NotificationListenerService;
|
||||
import android.service.notification.StatusBarNotification;
|
||||
import android.util.Log;
|
||||
|
@ -6,10 +6,15 @@ import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.os.Build;
|
||||
import android.telephony.PhoneStateListener;
|
||||
import android.telephony.TelephonyCallback;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import com.jens.automation2.ActivityPermissions;
|
||||
import com.jens.automation2.AutomationService;
|
||||
import com.jens.automation2.Miscellaneous;
|
||||
@ -22,6 +27,7 @@ import java.util.ArrayList;
|
||||
|
||||
public class PhoneStatusListener implements AutomationListenerInterface
|
||||
{
|
||||
static int problematicAndroidLevel = 29;
|
||||
protected static String lastPhoneNumber="";
|
||||
protected static int lastPhoneDirection = -1; //0=incoming, 1=outgoing
|
||||
protected static int currentState = -1;
|
||||
@ -70,7 +76,76 @@ public class PhoneStatusListener implements AutomationListenerInterface
|
||||
return currentState;
|
||||
}
|
||||
|
||||
public static class IncomingCallsReceiver extends PhoneStateListener
|
||||
public static interface IncomingCallsReceiver
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected static void workWithIncomingCallData(int state, String incomingNumber)
|
||||
{
|
||||
if(lastPhoneDirection == 2 && currentState != TelephonyManager.CALL_STATE_IDLE)
|
||||
{
|
||||
// This status update is actually for an outgoing call
|
||||
setCurrentState(state);
|
||||
|
||||
if(incomingNumber != null && incomingNumber.length() > 0) // check for null in case call comes in with suppressed number.
|
||||
setLastPhoneNumber(incomingNumber);
|
||||
|
||||
switch(state)
|
||||
{
|
||||
case TelephonyManager.CALL_STATE_IDLE:
|
||||
Miscellaneous.logEvent("i", "Call state", "New call state: CALL_STATE_IDLE", 4);
|
||||
break;
|
||||
case TelephonyManager.CALL_STATE_OFFHOOK:
|
||||
Miscellaneous.logEvent("i", "Call state", "New call state: CALL_STATE_OFFHOOK", 4);
|
||||
break;
|
||||
case TelephonyManager.CALL_STATE_RINGING:
|
||||
Miscellaneous.logEvent("i", "Call state", String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.outgoingCallTo), incomingNumber), 4);
|
||||
break;
|
||||
}
|
||||
|
||||
ArrayList<Rule> ruleCandidates = Rule.findRuleCandidates(Trigger_Enum.phoneCall);
|
||||
for(int i=0; i<ruleCandidates.size(); i++)
|
||||
{
|
||||
AutomationService asInstance = AutomationService.getInstance();
|
||||
if(asInstance != null)
|
||||
if(ruleCandidates.get(i).getsGreenLight(asInstance))
|
||||
ruleCandidates.get(i).activate(asInstance, false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
setCurrentState(state);
|
||||
setLastPhoneDirection(1);
|
||||
|
||||
if (incomingNumber != null && incomingNumber.length() > 0) // check for null in case call comes in with suppressed number.
|
||||
setLastPhoneNumber(incomingNumber);
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case TelephonyManager.CALL_STATE_IDLE:
|
||||
Miscellaneous.logEvent("i", "Call state", "New call state: CALL_STATE_IDLE", 4);
|
||||
break;
|
||||
case TelephonyManager.CALL_STATE_OFFHOOK:
|
||||
Miscellaneous.logEvent("i", "Call state", "New call state: CALL_STATE_OFFHOOK", 4);
|
||||
break;
|
||||
case TelephonyManager.CALL_STATE_RINGING:
|
||||
Miscellaneous.logEvent("i", "Call state", String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.incomingCallFrom), incomingNumber), 4);
|
||||
break;
|
||||
}
|
||||
|
||||
ArrayList<Rule> ruleCandidates = Rule.findRuleCandidates(Trigger_Enum.phoneCall);
|
||||
for (int i = 0; i < ruleCandidates.size(); i++)
|
||||
{
|
||||
AutomationService asInstance = AutomationService.getInstance();
|
||||
if (asInstance != null)
|
||||
if (ruleCandidates.get(i).getsGreenLight(asInstance))
|
||||
ruleCandidates.get(i).activate(asInstance, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class IncomingCallsReceiverOld extends PhoneStateListener implements IncomingCallsReceiver
|
||||
{
|
||||
@Override
|
||||
public void onCallStateChanged(int state, String incomingNumber)
|
||||
@ -86,65 +161,42 @@ public class PhoneStatusListener implements AutomationListenerInterface
|
||||
If the last call was outgoing the state has not changed to idle this is kind of a fake alert.
|
||||
*/
|
||||
|
||||
if(lastPhoneDirection == 2 && currentState != TelephonyManager.CALL_STATE_IDLE)
|
||||
workWithIncomingCallData(state, incomingNumber);
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.S)
|
||||
public static class IncomingCallsReceiverNew extends BroadcastReceiver implements IncomingCallsReceiver
|
||||
{
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent)
|
||||
{
|
||||
/*
|
||||
this code detects both incoming and outgoing,
|
||||
if the state changes idle => ringing you know it's an incoming call,
|
||||
if the state changes idle => offhook, you know it's an outgoing call
|
||||
*/
|
||||
|
||||
if (!intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL))
|
||||
{
|
||||
// This status update is actually for an outgoing call
|
||||
setCurrentState(state);
|
||||
String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE);
|
||||
int state = 99;
|
||||
|
||||
if(incomingNumber != null && incomingNumber.length() > 0) // check for null in case call comes in with suppressed number.
|
||||
setLastPhoneNumber(incomingNumber);
|
||||
|
||||
switch(state)
|
||||
switch(stateStr)
|
||||
{
|
||||
case TelephonyManager.CALL_STATE_IDLE:
|
||||
Miscellaneous.logEvent("i", "Call state", "New call state: CALL_STATE_IDLE", 4);
|
||||
case "RINGING":
|
||||
state = TelephonyManager.CALL_STATE_RINGING;
|
||||
break;
|
||||
case TelephonyManager.CALL_STATE_OFFHOOK:
|
||||
Miscellaneous.logEvent("i", "Call state", "New call state: CALL_STATE_OFFHOOK", 4);
|
||||
case "IDLE":
|
||||
state = TelephonyManager.CALL_STATE_IDLE;
|
||||
break;
|
||||
case TelephonyManager.CALL_STATE_RINGING:
|
||||
Miscellaneous.logEvent("i", "Call state", String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.outgoingCallTo), incomingNumber), 4);
|
||||
case "OFFHOOK":
|
||||
state = TelephonyManager.CALL_STATE_OFFHOOK;
|
||||
break;
|
||||
}
|
||||
|
||||
ArrayList<Rule> ruleCandidates = Rule.findRuleCandidates(Trigger_Enum.phoneCall);
|
||||
for(int i=0; i<ruleCandidates.size(); i++)
|
||||
{
|
||||
AutomationService asInstance = AutomationService.getInstance();
|
||||
if(asInstance != null)
|
||||
if(ruleCandidates.get(i).getsGreenLight(asInstance))
|
||||
ruleCandidates.get(i).activate(asInstance, false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
setCurrentState(state);
|
||||
setLastPhoneDirection(1);
|
||||
|
||||
if (incomingNumber != null && incomingNumber.length() > 0) // check for null in case call comes in with suppressed number.
|
||||
setLastPhoneNumber(incomingNumber);
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case TelephonyManager.CALL_STATE_IDLE:
|
||||
Miscellaneous.logEvent("i", "Call state", "New call state: CALL_STATE_IDLE", 4);
|
||||
break;
|
||||
case TelephonyManager.CALL_STATE_OFFHOOK:
|
||||
Miscellaneous.logEvent("i", "Call state", "New call state: CALL_STATE_OFFHOOK", 4);
|
||||
break;
|
||||
case TelephonyManager.CALL_STATE_RINGING:
|
||||
Miscellaneous.logEvent("i", "Call state", String.format(Miscellaneous.getAnyContext().getResources().getString(R.string.incomingCallFrom), incomingNumber), 4);
|
||||
break;
|
||||
}
|
||||
|
||||
ArrayList<Rule> ruleCandidates = Rule.findRuleCandidates(Trigger_Enum.phoneCall);
|
||||
for (int i = 0; i < ruleCandidates.size(); i++)
|
||||
{
|
||||
AutomationService asInstance = AutomationService.getInstance();
|
||||
if (asInstance != null)
|
||||
if (ruleCandidates.get(i).getsGreenLight(asInstance))
|
||||
ruleCandidates.get(i).activate(asInstance, false);
|
||||
}
|
||||
String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
|
||||
Log.i("test", "test");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -201,7 +253,12 @@ public class PhoneStatusListener implements AutomationListenerInterface
|
||||
}
|
||||
|
||||
if(incomingCallsReceiverInstance == null)
|
||||
incomingCallsReceiverInstance = new IncomingCallsReceiver();
|
||||
{
|
||||
// if(Build.VERSION.SDK_INT >= 31)
|
||||
// incomingCallsReceiverInstance = new IncomingCallsReceiverNew();
|
||||
// else
|
||||
incomingCallsReceiverInstance = new IncomingCallsReceiverOld();
|
||||
}
|
||||
|
||||
if(outgoingCallsReceiverInstance == null)
|
||||
outgoingCallsReceiverInstance = new OutgoingCallsReceiver();
|
||||
@ -211,8 +268,17 @@ public class PhoneStatusListener implements AutomationListenerInterface
|
||||
if(!incomingCallsReceiverActive)
|
||||
{
|
||||
Miscellaneous.logEvent("i", "PhoneStatusListener", "Starting PhoneStatusListener->incomingCallsReceiver", 4);
|
||||
TelephonyManager tm = (TelephonyManager)automationService.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
tm.listen(incomingCallsReceiverInstance, PhoneStateListener.LISTEN_CALL_STATE);
|
||||
// if(Build.VERSION.SDK_INT >= problematicAndroidLevel)
|
||||
// {
|
||||
// IntentFilter callsFilter = new IntentFilter();
|
||||
// callsFilter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
|
||||
// automationService.registerReceiver((IncomingCallsReceiverNew)incomingCallsReceiverInstance, callsFilter);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
TelephonyManager tm = (TelephonyManager) automationService.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
tm.listen((IncomingCallsReceiverOld)incomingCallsReceiverInstance, PhoneStateListener.LISTEN_CALL_STATE);
|
||||
// }
|
||||
incomingCallsReceiverActive = true;
|
||||
}
|
||||
|
||||
@ -236,8 +302,15 @@ public class PhoneStatusListener implements AutomationListenerInterface
|
||||
if(incomingCallsReceiverActive)
|
||||
{
|
||||
Miscellaneous.logEvent("i", "PhoneStatusListener", "Stopping phoneStatusListener", 4);
|
||||
TelephonyManager tm = (TelephonyManager)automationService.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
tm.listen(incomingCallsReceiverInstance, PhoneStateListener.LISTEN_NONE);
|
||||
// if(Build.VERSION.SDK_INT >= 31)
|
||||
// {
|
||||
// automationService.unregisterReceiver((IncomingCallsReceiverNew)incomingCallsReceiverInstance);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
TelephonyManager tm = (TelephonyManager) automationService.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
tm.listen((IncomingCallsReceiverOld)incomingCallsReceiverInstance, PhoneStateListener.LISTEN_NONE);
|
||||
// }
|
||||
incomingCallsReceiverActive = false;
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
BIN
app/src/main/res/drawable-hdpi/clipboard.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
app/src/main/res/drawable-hdpi/crane.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
app/src/main/res/drawable-ldpi/crane.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
app/src/main/res/drawable-mdpi/crane.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
app/src/main/res/drawable-v24/crane.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
app/src/main/res/drawable-xhdpi/crane.png
Normal file
After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 3.7 KiB |
BIN
app/src/main/res/drawable/crane.png
Normal file
After Width: | Height: | Size: 13 KiB |
@ -37,6 +37,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/generalText" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_margin="@dimen/default_margin" >
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/textToCopy" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/etCopyToClipboard"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:inputType="textShortMessage|textMultiLine" >
|
||||
</EditText>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvTextMessageAnnotations"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dip"
|
||||
android:text="@string/textMessageAnnotations" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLegend"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/urlLegend" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bSaveCopyToClipboard"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/save" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
@ -113,6 +113,7 @@
|
||||
android:text="@string/startAppStartType" />
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/rgAppStartupType"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
@ -135,6 +136,12 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/startAppByStartService" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/rbStartAppByForegroundService"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/startAppByStartForegroundService" />
|
||||
|
||||
</RadioGroup>
|
||||
|
||||
</TableRow>
|
||||
@ -187,6 +194,25 @@
|
||||
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/className" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/etClassName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="textMultiLine"
|
||||
android:text=""
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
@ -304,6 +330,24 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/addIntentValue" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="@dimen/default_margin"
|
||||
android:text="@string/intentParametersHint" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="25dp"
|
||||
android:text="@string/variablesOnlyForTypes" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLegend"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/urlLegend" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
|
@ -103,6 +103,14 @@
|
||||
|
||||
</TableLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvWifiTriggerDisconnectionHint"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="@dimen/default_margin"
|
||||
android:textColor="@color/red"
|
||||
android:text="@string/wifiTriggerDisconnectionHint" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/bTriggerWifiSave"
|
||||
android:layout_marginTop="@dimen/default_margin"
|
||||
|
@ -59,6 +59,13 @@
|
||||
android:entries="@array/tabsPlacementOptions"
|
||||
android:entryValues="@array/tabsPlacementOptionsValues" />
|
||||
|
||||
<ListPreference
|
||||
android:key="displayLanguage"
|
||||
android:title="@string/displayLanguage"
|
||||
android:summary="@string/displayLanguageSummary"
|
||||
android:entries="@array/displayLanguageOptions"
|
||||
android:entryValues="@array/displayLanguageValues" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="executeRulesAndProfilesWithSingleClick"
|
||||
android:title="@string/executeRulesAndProfilesWithSingleClickTitle" />
|
||||
@ -74,7 +81,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"
|
||||
|
@ -1,5 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="languageSystemDefault">System Standard</string>
|
||||
<string name="languageEnglish">Englisch</string>
|
||||
<string name="languageGerman">Deutsch</string>
|
||||
<string name="languageItalian">Italienisch</string>
|
||||
<string name="languageSpanish">Spanisch</string>
|
||||
<string name="languageDutch">Niederländisch</string>
|
||||
<string name="languageRussian">Russisch</string>
|
||||
<string name="languageFrench">Französisch</string>
|
||||
<string name="ruleActivate">Aktiviere Regel %1$s</string>
|
||||
<string name="profileActivate">Aktiviere Profil %1$s</string>
|
||||
<string name="ruleActivateToggle">Aktiviere Regel %1$s im Umkehrmodus</string>
|
||||
@ -57,7 +65,7 @@
|
||||
<string name="end">Ende</string>
|
||||
<string name="save">Speichern</string>
|
||||
<string name="urlToTrigger">URL, die ausgelöst werden soll:</string>
|
||||
<string name="urlLegend">Variablen:\nSie können die folgenden Variablen verwenden. Vor dem Auslösen werden sie mit dem entsprechenden Wert Ihres Geräts ersetzt. Die Klammern müssen in den Text mit aufgenommen werden.\n\n[uniqueid] - Die Unique ID Ihres Geräts\n[serialnr] - Die Seriennummer Ihres Geräts (< Android 9)\n[latitude] - Ihr gegenwärtiger Breitengrad\n[longitude] - Ihr gegenwärtiger Längengrad\n[phonenr] - Nummer des letzten ein- oder ausgehenden Anrufs\n[d] - Tag des Monats, 2-stellig mit führender Null\n[m] - Monat als Zahl, mit führenden Nullen\n[Y] - Vierstellige Jahreszahl\n[h] - Stunde im 12-Stunden-Format, mit führenden Nullen\n[H] - Stunde im 24-Stunden-Format, mit führenden Nullen\n[i] - Minuten, mit führenden Nullen\n[s] - Sekunden, mit führenden Nullen\n[ms] - milliseconds\n[notificationTitle] - Titel der letzten Benachrichtigung\n[notificationText] - Text der letzten Benachrichtigung</string>
|
||||
<string name="urlLegend">Variablen:\nSie können die folgenden Variablen verwenden. Vor dem Auslösen werden sie mit dem entsprechenden Wert Ihres Geräts ersetzt. Die Klammern müssen in den Text mit aufgenommen werden.\n\n[uniqueid] - Die Unique ID Ihres Geräts\n[serialnr] - Die Seriennummer Ihres Geräts (< Android 9)\n[latitude] - Ihr gegenwärtiger Breitengrad\n[longitude] - Ihr gegenwärtiger Längengrad\n[phonenr] - Nummer des letzten ein- oder ausgehenden Anrufs\n[d] - Tag des Monats, 2-stellig mit führender Null\n[m] - Monat als Zahl, mit führenden Nullen\n[Y] - Vierstellige Jahreszahl\n[h] - Stunde im 12-Stunden-Format, mit führenden Nullen\n[H] - Stunde im 24-Stunden-Format, mit führenden Nullen\n[i] - Minuten, mit führenden Nullen\n[s] - Sekunden, mit führenden Nullen\n[ms] - milliseconds\n[notificationTitle] - Titel der letzten Benachrichtigung\n[notificationText] - Text der letzten Benachrichtigung\n[variable-VARIABLENAME] - Der Wert Ihrer selbst definitierten Variable</string>
|
||||
<string name="wifi">WLAN</string>
|
||||
<string name="activating">Aktiviere</string>
|
||||
<string name="deactivating">Deaktiviere</string>
|
||||
@ -112,7 +120,7 @@
|
||||
<string name="soundSettings">Ton Einstellungen</string>
|
||||
<string name="showHelp">Hilfe</string>
|
||||
<string name="rules">Regeln</string>
|
||||
<string name="helpTextRules">Alle Auslöser sind UND-verknüpft. D.h. die Regel wird nur zutreffen, wenn alle Bedingungen erfüllt sind. Wenn Sie eine ODER-Verknüpfung möchten, müssen Sie eine weitere Regel erstellen.</string>
|
||||
<string name="helpTextRules">Alle Auslöser sind UND-verknüpft. D.h. die Regel wird nur zutreffen, wenn alle Bedingungen erfüllt sind. Wenn Sie eine ODER-Verknüpfung möchten, müssen Sie eine weitere Regel erstellen.\nDie Begriffe Auslöser und Bedingung werden synonym verwendet. Alle von ihnen sind Bedingungen, aber die letzte, die ihren erforderlichen Wert erfüllt, könnte als Auslöser bezeichnet werden, da sie das letzte Teil des Puzzles ist, um eine Regel auszuführen.</string>
|
||||
<string name="timeframes">Zeiträume</string>
|
||||
<string name="helpTextTimeFrame">Wenn Sie eine Regel mit einem Zeitraum erstellen, haben Sie zwei Möglichkeiten. Sie können wählen, ob der Auslöser besagt, daß der Zeitraum entweder verlassen ODER betreten wird. In jedem Fall wird die Regel nur einmal ausgelöst. Wenn eine Regel z.B. besagt \"betrete timeframe xyz\" und das Klingeltonprofil in Vibration ändert, bedeutet das NICHT, daß das Gerät hinterher automatisch wieder zum normalen Klingelprofil zurückschaltet. Wenn das erwünscht ist, muß eine weitere Regel mit einem Folgezeitraum erstellen werden.</string>
|
||||
<string name="helpTextSound">Auf dem Hauptbildschirm können Sie die Funktion Tonänderunugen sperren benutzen, um vorrübergehend regelbasierte Tonänderungen zu deaktivieren. Z.B. könnten Sie in einer Situation oder an einem Ort sein, wo Klingeltöne normalerweise in Ordnung sind, aber dieses eine Mal würde es stören. Die Funktion wird automatisch wieder deaktiviert nachdem die eingestellte Zeit abgelaufen ist. Klicken Sie den + Knopf, um die angezeigte Zeit zur Frist hinzuzufügen. Sobald es aktiv ist, können Sie es mit dem Schalter rechts wieder abschalten (und so regelbasierte Tonänderungen wieder ermöglichen).</string>
|
||||
@ -594,7 +602,7 @@
|
||||
<string name="tabsPlacement">Position der Tableiste</string>
|
||||
<string name="top">Oben</string>
|
||||
<string name="bottom">Unten</string>
|
||||
<string name="tabsPlacementSummary">Wol soll die Taskleiste angezeigt werden?</string>
|
||||
<string name="tabsPlacementSummary">Wo soll die Taskleiste angezeigt werden?</string>
|
||||
<string name="tones">Klingeltöne</string>
|
||||
<string name="miscellaneous">Verschiedenes</string>
|
||||
<string name="dnd">Nicht stören</string>
|
||||
@ -722,7 +730,7 @@
|
||||
<string name="enterBroadcast">Geben Sie eine Aktion für den Broadcast ein.</string>
|
||||
<string name="broadcastExplanation">Diese Aktion erlaubt es, einen Broadcast über das Nachrichtensystem von Android zu verschicken. Das ist für den Benutzer nicht sichtbar, aber Anwendungen, die sich für bestimmte Broadcasts registriert haben, können darauf reagieren.</string>
|
||||
<string name="explanationBroadcastTrigger">La mayoría de los eventos en su teléfono se \"publicado\" transmitiéndolos a través del sistema operativo.\nPor ejemplo, activar / desactivar el modo avión activará dicha transmisión. Esas transmisiones no son automáticamente visibles / audibles, pero si una aplicación (como Automatización) está interesada, puede conectarse a ellas. Cuando ocurran, se le notificará y podrá reaccionar.\n\nPuede definir aquí un evento de difusión para el que la aplicación esperará. Puede ingresarlo manualmente, copiarlo y pegarlo desde algún lugar o elegir uno de la lista de sugerencias. Como este desencadenante está destinado a ser y seguir siendo muy flexible, no puedo proporcionarle explicaciones para los elementos.\n\nLa lista de sugerencias no pretende estar completa. Visite la siguiente URL para echar un vistazo a la documentación de Android.\nTambién cualquier aplicación puede enviar eventos personalizados que no aparecerán en la documentación de Android, por supuesto.\n\nMuchas transmisiones requieren permisos específicos para funcionar. Intento solicitar permisos donde sé que serán necesarios. Si cree que se requiere un permiso para la acción que ingresó, hágamelo saber.\n\nNo recibido significa que no ha habido tal transmisión desde que se inició el servicio. Responder a ciertos parámetros está en desarrollo.</string>
|
||||
<string name="logsExplanation">Um eine unnötige Abnutzung Ihres Speichers zu vermeiden, werden Protokolle standardmäßig nicht gespeichert. Wenn Sie also ein Problem haben, aktivieren Sie bitte zuerst die Anmeldeeinstellungen und setzen Sie den Protokollpegel auf 5. Reproduzieren Sie dann das Problem. Erst dann können Protokolle angehängt werden.</string>
|
||||
<string name="logsExplanation">Um eine unnötige Abnutzung Ihres Speichers zu vermeiden, werden Protokolle standardmäßig nicht gespeichert. Wenn Sie also ein Problem haben, aktivieren Sie bitte zuerst die Protokollierungseinstellungen und setzen Sie den Protokollpegel auf 5. Reproduzieren Sie dann das Problem. Erst dann können Protokolle angehängt werden.</string>
|
||||
<string name="directionStringDoesNotContain">enthält nicht</string>
|
||||
<string name="path">Pfad</string>
|
||||
<string name="runExecutable">Programm/Script ausführen</string>
|
||||
@ -771,4 +779,27 @@
|
||||
<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>
|
||||
<string name="notificationAccessAndroid13">Nachdem Sie auf OK geklickt haben, wählen Sie Automatisierung, dann \"Benachrichtigungszugriff zulassen\", dann \"Zulassen\".\n\nAuf einigen Systemen ist diese Einstellung ausgegraut. In diesen Fällen müssen Sie zu \"settings\" -> \"apps\" -> \"Automation\" -> 3-Punkte-Menü -> Gehen Sie diese Einschränkungen auf. Danach kehren Sie hierher zurück.</string>
|
||||
<string name="displayLanguage">Anzeigesprache</string>
|
||||
<string name="displayLanguageSummary">Bestimmte Anzeigesprache wählen</string>
|
||||
<string name="wifiMonitoringAlsoRequiresThis">Diese Berechtigung wird auch benötigt, wenn man die aktuelle WLAN Verbindung auslesen möchte.</string>
|
||||
<string name="copyTextToClipboard">Text in die Zwischenablage kopieren</string>
|
||||
<string name="textToCopy">Text, der kopiert werden soll</string>
|
||||
<string name="android.permission.SYSTEM_ALERT_WINDOW">Über anderen Anwendungen anzeigen</string>
|
||||
<string name="overlayPermissionHint">Nachdem Sie auf OK geklickt haben, werden Sie zu einem Systemdialog weitergeleitet. Bitte wählen Sie dort Automation aus und erlauben Sie die Anzeige über anderen Apps.</string>
|
||||
<string name="variablesOnlyForTypes">Variablen sind nur für die Parametertypen String und URI verfügbar</string>
|
||||
<string name="intentParametersHint">Wenn Sie einen Parameter angeben möchten, müssen Sie auch auf \"Intent-Paar hinzufügen\" klicken. Andernfalls werden Ihre Änderungen nicht gespeichert.</string>
|
||||
<string name="languagePolish">Polnisch</string>
|
||||
<string name="languageChineseChina">Chinesisch (China)</string>
|
||||
<string name="wifiTriggerDisconnectionHint">Dieser Auslöser ist gültig, wenn Sie gerade die Verbindung zu dem oben angegebenen WLAN getrennt haben ODER während der Dienst noch gestartet wird und wenn Sie mit keinem WLAN verbunden sind. Wenn Sie möchten, dass der Auslöser nur ausgelöst wird, wenn Sie die Verbindung zu einem bestimmten WLAN explizit trennen, fügen Sie einen weiteren Auslöser hinzu: \"Der Dienst wird nicht gestartet\".</string>
|
||||
<string name="className">Klassenname</string>
|
||||
<string name="startAppByStartForegroundService">per startForegroundService()</string>
|
||||
</resources>
|
@ -1,5 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="languageSystemDefault">Predeterminado</string>
|
||||
<string name="languageEnglish">Inglés</string>
|
||||
<string name="languageGerman">Alemán</string>
|
||||
<string name="languageItalian">Italiano</string>
|
||||
<string name="languageSpanish">Español</string>
|
||||
<string name="languageDutch">Holandés</string>
|
||||
<string name="languageRussian">Ruso</string>
|
||||
<string name="languageFrench">Francés</string>
|
||||
<string name="ruleActivate">Estoy activando regla %1$s</string>
|
||||
<string name="profileActivate">Estoy activando perfil %1$s</string>
|
||||
<string name="ruleActivateToggle">Estoy activando regla %1$s en el modo de invertir</string>
|
||||
@ -359,14 +367,14 @@
|
||||
<string name="networkAccuracy">Red exactitud [m]</string>
|
||||
<string name="minimumTimeForLocationUpdates">Tiempo mínimo para cambio en milisegundos para actualizar posición</string>
|
||||
<string name="timeForUpdate">Tiempo para actualizar [milisegundos]</string>
|
||||
<string name="urlLegend">Variables: Puede usar esas variables. Mientras ejecuta van a sustituir con los valores correspondientes en su dispositivo. Incluya las paréntecis en su texto.\n\n[uniqueid] - el número único de su dispositivo\n[serialnr] - el número de serie de su dispositivo (< Android 9)\n[latitude] - su latitud\n[longitude] - su longitud\n[phonenr] - Ùltimo número de llamada realizada tanto de salida como entrante\n[d] - Dia del mes, 2 digitos con cero al comienzo\n[m] - número del mes, 2 digitos con cero al comienzo\n[Y] - Número del año, 4 digitos\n[h] - Hora, formato 12 horas con cero al comienzo\n[H] - Hora, formato 24 horas con cero al comienzo\n[i] - Minutos con cero al comienzo\n[s] - Segundos con cero al comienzo\n[ms] - milisegundos\n[notificationTitle] - Título de la última notificación\n[notificationText] - Texto de la última notificación</string>
|
||||
<string name="urlLegend">Variables: Puede usar esas variables. Mientras ejecuta van a sustituir con los valores correspondientes en su dispositivo. Incluya las paréntecis en su texto.\n\n[uniqueid] - el número único de su dispositivo\n[serialnr] - el número de serie de su dispositivo (< Android 9)\n[latitude] - su latitud\n[longitude] - su longitud\n[phonenr] - Ùltimo número de llamada realizada tanto de salida como entrante\n[d] - Dia del mes, 2 digitos con cero al comienzo\n[m] - número del mes, 2 digitos con cero al comienzo\n[Y] - Número del año, 4 digitos\n[h] - Hora, formato 12 horas con cero al comienzo\n[H] - Hora, formato 24 horas con cero al comienzo\n[i] - Minutos con cero al comienzo\n[s] - Segundos con cero al comienzo\n[ms] - milisegundos\n[notificationTitle] - Título de la última notificación\n[notificationText] - Texto de la última notificación\n[variable-VARIABLENAME] - El valor de la variable definida personalizada</string>
|
||||
<string name="screenRotationAlreadyEnabled">Rotación del monitor todavia esta activado.</string>
|
||||
<string name="screenRotationAlreadyDisabled">Rotación del monitor todavia esta desactivado.</string>
|
||||
<string name="needLocationPermForWifiList">Se puede usar la lista de wifis conocidos para determinar los sitios en los cuales estuvo. Por eso el permiso de localización es necesario para cargar la lista de wifis. Si quiere elegir uno de la lista tiene que conceder el permiso. En caso contrario todavia puede introducir un nombre wifi manualmente.</string>
|
||||
<string name="com.wireguard.android.permission.CONTROL_TUNNELS">Controlar conexiones de la app Wireguard</string>
|
||||
<string name="shareConfigAndLogFilesWithDev">Adjuntar configuración y procotolo.</string>
|
||||
<string name="rootExplanation">Necesita permiso root para esta función. Después encienda la función \"ejecutar regla manualmente\" para presentar el permiso superuser dialogo. Es necesario elegir \"siempre permitir root para esta app\". En caso contrario la regla no puede funcionar en segundo plano.</string>
|
||||
<string name="helpTextRules">Todas las condiciones están \"Y\"-conectadas. La regla solo va a aplicarse cuando todas las condiciones se aplican. Si quiere \"O\", cree otra regla.</string>
|
||||
<string name="helpTextRules">Todas las condiciones están \"Y\"-conectadas. La regla solo va a aplicarse cuando todas las condiciones se aplican. Si quiere \"O\", cree otra regla.\nLos términos desencadenante y condición se utilizan como sinónimos. Todas ellas son condiciones, pero la última en cumplir con su valor requerido podría llamarse disparador porque es la pieza final del rompecabezas para hacer que se ejecute una regla.</string>
|
||||
<string name="timeBetweenNoiseLevelMeasurementsSummary">Segundos entre dos ensayos de nivel de ruido</string>
|
||||
<string name="timeBetweenNoiseLevelMeasurementsTitle">Segundos entre dos ensayos de nivel de ruido</string>
|
||||
<string name="lengthOfNoiseLevelMeasurementsSummary">Duración en segundos para una prueba de nivel de ruido</string>
|
||||
@ -770,4 +778,27 @@
|
||||
<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>
|
||||
<string name="notificationAccessAndroid13">Después de cliquear en Aceptar, seleccione Automatización y, a continuación, seleccione \"Permitir acceso a notificaciones\", luego \"permitir\".\n\nEn algunos sistemas, esta configuración está atenuada. En esos casos, debe ir a \"configuración\" -> \"aplicaciones\" -> \"Automatización\" -> menú de 3 puntos -> Levante estas restricciones. Luego regreso aquí.</string>
|
||||
<string name="displayLanguage">Idioma de visualización</string>
|
||||
<string name="displayLanguageSummary">Establecer un idioma personalizado para la aplicación</string>
|
||||
<string name="wifiMonitoringAlsoRequiresThis">Este permiso también es necesario si el disparador está utilizando la conexión wifi actual.</string>
|
||||
<string name="copyTextToClipboard">Copiar texto al portapapeles</string>
|
||||
<string name="textToCopy">Texto para copiar</string>
|
||||
<string name="android.permission.SYSTEM_ALERT_WINDOW">Dibujar encima otras aplicaciones</string>
|
||||
<string name="overlayPermissionHint">Después de hacer cliquear en Aceptar, se le enviará a un cuadro de diálogo del sistema. Seleccione Automation allí y permita dibujar encima otras aplicaciones.</string>
|
||||
<string name="variablesOnlyForTypes">Las variables solo están disponibles para los tipos de parámetro String y URI</string>
|
||||
<string name="intentParametersHint">Si desea especificar un parámetro, también debe hacer clic en \"Agregar par de intención\". De lo contrario, los cambios no se guardarán.</string>
|
||||
<string name="languagePolish">Polaco</string>
|
||||
<string name="languageChineseChina">Chino (China)</string>
|
||||
<string name="wifiTriggerDisconnectionHint">Este activador será válido si acabas de desconectarte del wifi especificado anteriormente O mientras el servicio aún se está iniciando y si no estás conectado a ningún wifi. Si desea que el activador se active solo cuando se desconecte explícitamente de una determinada red WiFi, agregue otro activador \"el servicio no se está iniciando\".</string>
|
||||
<string name="className">Nombre de la clase</string>
|
||||
<string name="startAppByStartForegroundService">a través de startForegroundService((</string>
|
||||
</resources>
|
@ -1,5 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="languageSystemDefault">Valeur par défaut du système</string>
|
||||
<string name="languageEnglish">Anglais</string>
|
||||
<string name="languageGerman">Allemand</string>
|
||||
<string name="languageItalian">Italien</string>
|
||||
<string name="languageSpanish">Espagnol</string>
|
||||
<string name="languageDutch">Néerlandais</string>
|
||||
<string name="languageRussian">Russe</string>
|
||||
<string name="languageFrench">Français</string>
|
||||
<string name="ruleActivate">Activation de la règle %1$s</string>
|
||||
<string name="profileActivate">Activation du profil %1$s</string>
|
||||
<string name="ruleActivateToggle">Activation de la règle %1$s en mode alternatif</string>
|
||||
@ -57,7 +65,7 @@
|
||||
<string name="end">Arrêt</string>
|
||||
<string name="save">Enregistrer</string>
|
||||
<string name="urlToTrigger">URL à déclencher :</string>
|
||||
<string name="urlLegend">Variables :\nVous pouvez utiliser les variables suivantes. Lors du déclenchement, elles seront remplacées par les variables correspondantes sur votre appareil. Insérez les parenthèses dans votre texte.\n\n[uniqueid] - Identifiant unique de votre appareil\n[serialnr] - Numéro de série de votre appareil (< Android 9)\n[latitude] - Latitude de votre appraeil\n[longitude] - Longitude de votre appraeil\n[phonenr] - Numéro des derniers appels entrants ou sortants\n[d] - Jour du mois, @ chiffres commençant par 0\n[m] - Valeur numérique du mois, avec @ chiffres\n[Y] - Valeur numérique de l’année, $ chiffres\n[h] - Format horaire 12 heures, 2 chiffres\n[H] - Format horaire 24 heures, 2 chiffres\n[i] - Nombre de minutes, 2 chiffres\n[s] - Nombre de secondes, 2 chiffres\n[ms] - Nombre de millisecondes\n[notificationTitle] - titre de la dernière notification\n[notificationText] - texte de la dernière notification</string>
|
||||
<string name="urlLegend">Variables :\nVous pouvez utiliser les variables suivantes. Lors du déclenchement, elles seront remplacées par les variables correspondantes sur votre appareil. Insérez les parenthèses dans votre texte.\n\n[uniqueid] - Identifiant unique de votre appareil\n[serialnr] - Numéro de série de votre appareil (< Android 9)\n[latitude] - Latitude de votre appraeil\n[longitude] - Longitude de votre appraeil\n[phonenr] - Numéro des derniers appels entrants ou sortants\n[d] - Jour du mois, @ chiffres commençant par 0\n[m] - Valeur numérique du mois, avec @ chiffres\n[Y] - Valeur numérique de l’année, $ chiffres\n[h] - Format horaire 12 heures, 2 chiffres\n[H] - Format horaire 24 heures, 2 chiffres\n[i] - Nombre de minutes, 2 chiffres\n[s] - Nombre de secondes, 2 chiffres\n[ms] - Nombre de millisecondes\n[notificationTitle] - titre de la dernière notification\n[notificationText] - texte de la dernière notification\n[variable-VARIABLENAME] - Valeur de votre variable définie personnalisée</string>
|
||||
<string name="wifi">wifi</string>
|
||||
<string name="activating">Allumer</string>
|
||||
<string name="deactivating">Éteindre</string>
|
||||
@ -112,7 +120,7 @@
|
||||
<string name="soundSettings">Réglages audio</string>
|
||||
<string name="showHelp">Afficher l’aide</string>
|
||||
<string name="rules">Règles</string>
|
||||
<string name="helpTextRules">Tous les déclencheurs d’une règle sont reliés par un lien logique ET, la règle ne s’applique que si tous les déclencheurs sont satisfaits. Pour un lien logique OU, créez une autre règle.</string>
|
||||
<string name="helpTextRules">Tous les déclencheurs d’une règle sont reliés par un lien logique ET, la règle ne s’applique que si tous les déclencheurs sont satisfaits. Pour un lien logique OU, créez une autre règle.\nLes termes déclencheur et condition sont utilisés comme synonymes. Toutes sont des conditions, mais la dernière à atteindre sa valeur requise pourrait être appelée déclencheur car c\'est la dernière pièce du puzzle pour provoquer l\'exécution d\'une règle.</string>
|
||||
<string name="timeframes">Délais d’éxécution</string>
|
||||
<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>
|
||||
@ -274,6 +282,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 +778,27 @@
|
||||
<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>
|
||||
<string name="notificationAccessAndroid13">Après avoir cliqué sur OK, sélectionnez Automatisation, puis sélectionnez \"Autoriser l\'accès aux notifications\ », puis \"Autoriser\ ».\n\nSur certains systèmes, ce paramètre est grisé. Dans ces cas, vous devez aller dans \"settings\ » -> \"apps\ » -> \"Automation\ » -> 3-dots-menu -> Levez ces restrictions. Ensuite, revenez ici.</string>
|
||||
<string name="displayLanguage">Langue d\'affichage</string>
|
||||
<string name="displayLanguageSummary">Définir une langue personnalisée pour l\'application</string>
|
||||
<string name="wifiMonitoringAlsoRequiresThis">Cette autorisation est également requise si le déclencheur utilise la connexion wifi actuelle.</string>
|
||||
<string name="copyTextToClipboard">Copier du texte dans le presse-papiers</string>
|
||||
<string name="textToCopy">Texte à copier</string>
|
||||
<string name="android.permission.SYSTEM_ALERT_WINDOW">Dessiner sur d\'autres applications</string>
|
||||
<string name="overlayPermissionHint">Après avoir cliqué sur OK, vous serez redirigé vers une boîte de dialogue système. Veuillez sélectionner Automatisation et autoriser le tirage sur d\'autres applications.</string>
|
||||
<string name="variablesOnlyForTypes">Les variables ne sont disponibles que pour les types de paramètres String et URI</string>
|
||||
<string name="intentParametersHint">Si vous souhaitez spécifier un paramètre, vous devez également cliquer sur « Ajouter une paire d\'intentions ». Sinon, vos modifications ne seront pas enregistrées.</string>
|
||||
<string name="languagePolish">Polonais</string>
|
||||
<string name="languageChineseChina">Chinois (Chine)</string>
|
||||
<string name="wifiTriggerDisconnectionHint">Ce déclencheur sera valide si vous venez de vous déconnecter du wifi spécifié ci-dessus OU alors que le service est encore en cours de démarrage et si vous n\'êtes connecté à aucun wifi. Si vous souhaitez que le déclencheur ne se déclenche que lorsque vous vous déconnectez explicitement d\'un certain wifi, ajoutez un autre déclencheur « le service ne démarre pas ».</string>
|
||||
<string name="className">Nom de la classe</string>
|
||||
<string name="startAppByStartForegroundService">par startForegroundService()</string>
|
||||
</resources>
|
||||
|
@ -228,7 +228,7 @@
|
||||
<string name="helpTextEnergySaving">Molti produttori di dispositive Android cercano di salvare energia limitando le attività di applicazioni eseguite in secondo piano. Sfortunatamente, questo spesso fa che tali applicazioni non funzionino correttamente e Automation è fra queste. Puoi leggere questa <a href="https://dontkillmyapp.com/">pagina web</a> per scoprire come escludere Automation da queste funzioni di risparmio energetico.</string>
|
||||
<string name="helpTextPoi">Una posizione è composta da coordinate GPS ed un raggio d\'azione. Dato che il posizionamento realizzato tramite i ripetitori del tuo gestore è piuttosto impreciso (ma veloce e consuma poca batteria), è bene non specificare un raggio troppo piccolo. L\'applicazione suggerisce un raggio minimo quando si crea una nuova posizione.</string>
|
||||
<string name="helpTextProcessMonitoring">Se si specifica una regola che controlli l\'esecuzione di un processo, Automation eseguirà la verifica ogni x secondi (con x selezionabile nelle impostazioni). Bisogna considerare che un monitoraggio costante provocherebbe un rapido esaurimento della batteria e non esistono notifiche di questo tipo di attività proviste dal sistema operativo.</string>
|
||||
<string name="helpTextRules">Gli eventi di attivazione sono in AND logico. La regola sarà eseguita solo se tutti gli eventi sono soddisfatti. Per l\'OR logico basta creare un\'altra regola.</string>
|
||||
<string name="helpTextRules">Gli eventi di attivazione sono in AND logico. La regola sarà eseguita solo se tutti gli eventi sono soddisfatti. Per l\'OR logico basta creare un\'altra regola.\nI termini trigger e condizione vengono utilizzati come sinonimi. Tutte sono condizioni, ma l\'ultima a soddisfare il valore richiesto potrebbe essere chiamata trigger perché è il pezzo finale del puzzle per causare l\'esecuzione di una regola.</string>
|
||||
<string name="helpTextSound">Nello schermo principale puoi bloccare temporaneamente i cambi ai suoni per evitare l\'esecuzione di regole che facciano cambi alle attività sonore. Per esempio, potresti essere in una situatione o in un luogo dove normalmente ascoltare il suono di una suoneria è ok, ma in questa occasione bisognerebbe evitarlo. Questa funzione si disattiverà automaticamente non appena sia trascorso il tempo selezionato. Fai Click sul bottone + per raggiungere la quantità di tempo desiderata. Una volta attiva, questa si può disattivare nuovamente usando il pulsante di attivazione (e in questo modo, si riattiveranno le regole basate su cambi sonori).</string>
|
||||
<string name="helpTextTimeFrame">Se si specifica una regola con un intervallo temporale si hanno due scelte. È possibile scegliere se si desidera attivare la regola all\'interno o all\'esterno dell\'intervallo di tempo. In entrambi i casi l\'azione verrà eseguita una sola volta. Quindi, se si crea una regola che imposta il profilo su vibrazione nell\'intervallo temporale xyz, il telefono, passato allo stato vibrazione, rimarrà definitivamente in tale stato anche dopo lo scadere dell\'intervallo di tempo. Se si desidera che ciò avvenga è necessario specificare un\'altra regola con un altro periodo di tempo.</string>
|
||||
<string name="helpTextToggable">Le regole hanno un segno di spunta chiamato "Reversibile". Ciò significa che, se una regola viene eseguita al verificarsi di un evento e poi quest\'ultimo si verifica una seconda volta, il comando della regola verrà eseguito una ulteriore volta in modalità inversa, se possibile. Attualmente questo avverrà solo in combinazione con etichette NFC. Se le si tocca due volte la regola associata invertirà la situazione attuale. Per esempio una regola “Reversibile” può disattivare il WiFi se attivo e viceversa attivarlo se non attivo.</string>
|
||||
@ -396,6 +396,14 @@
|
||||
<string name="roaming">Roaming</string>
|
||||
<string name="rootExplanation">È necessario avere i permessi di root per utilizzare questa funzione. Una volta abilitato l\'accesso root, dovrai \"eseguire la regola manualmente\" per attivare la richiesta di autorizzazione come superuser. Nella finestra di popup di superuser, bisognerà consentire sempre l\'esecuzione dell\'applicazione con questi permessi. In caso contrario, la regola non potrà funzionare quando il telefono è inattivo.</string>
|
||||
<string name="rule">Regola</string>
|
||||
<string name="languageSystemDefault">Impostazione predefinita del sistema</string>
|
||||
<string name="languageEnglish">Inglese</string>
|
||||
<string name="languageGerman">Tedesco</string>
|
||||
<string name="languageItalian">Italiano</string>
|
||||
<string name="languageSpanish">Spagnolo</string>
|
||||
<string name="languageDutch">Olandese</string>
|
||||
<string name="languageRussian">Russo</string>
|
||||
<string name="languageFrench">Francese</string>
|
||||
<string name="ruleActivate">Attivando la regola %1$s</string>
|
||||
<string name="ruleActivateToggle">Attivando la regola %1$s in modalità reversibile</string>
|
||||
<string name="ruleActive">Regola attiva</string>
|
||||
@ -534,7 +542,7 @@
|
||||
<string name="tuesday">Martedì</string>
|
||||
<string name="unknownError">Errore indeterminato.</string>
|
||||
<string name="until">finchè</string>
|
||||
<string name="urlLegend">Variabili:\n È possibile utilizzare le seguenti variabili. Quando attivate, saranno sostituite con il valore corrispondente sul tuo dispositivo. Includi le parentesi nel tuo testo.\n\n[uniqueid] - L\'ID unico del tuo dispositivo\n[serialnr] - Il numero di serie del tuo dispositivio (< Android 9)\n[latitude] - La latitudine del tuo dispositivo\n[longitude] - La longitudine del tuo dispositivo\n[phonenr] - Numero dell\'ultima chiamata (entrante o uscente)\n[d] - Il giorno del mese, sempre 2 cifre con zero iniziale \n[m] - Mese in formato numerico, sempre 2 cifre con zero iniziale \n[Y] - L\’anno, sempre con 4 cifre\n[h] - Ore in formato 12 ore, sempre 2 cifre con due punti\n[H] - Ore in formato 24 ore, sempre 2 cifre con due punti\n[i] - Minuti, sempre 2 cifre\n[s] - Secondi, sempre 2 cifre\n[ms] - millisecondi, sempre 3 cifre\n[notificationTitle] - titolo dell\'ultima notifica\n[notificationText] - testo dell\'ultima notifica</string>
|
||||
<string name="urlLegend">Variabili:\n È possibile utilizzare le seguenti variabili. Quando attivate, saranno sostituite con il valore corrispondente sul tuo dispositivo. Includi le parentesi nel tuo testo.\n\n[uniqueid] - L\'ID unico del tuo dispositivo\n[serialnr] - Il numero di serie del tuo dispositivio (< Android 9)\n[latitude] - La latitudine del tuo dispositivo\n[longitude] - La longitudine del tuo dispositivo\n[phonenr] - Numero dell\'ultima chiamata (entrante o uscente)\n[d] - Il giorno del mese, sempre 2 cifre con zero iniziale \n[m] - Mese in formato numerico, sempre 2 cifre con zero iniziale \n[Y] - L\’anno, sempre con 4 cifre\n[h] - Ore in formato 12 ore, sempre 2 cifre con due punti\n[H] - Ore in formato 24 ore, sempre 2 cifre con due punti\n[i] - Minuti, sempre 2 cifre\n[s] - Secondi, sempre 2 cifre\n[ms] - millisecondi, sempre 3 cifre\n[notificationTitle] - titolo dell\'ultima notifica\n[notificationText] - testo dell\'ultima notifica\n[variable-VARIABLENAME] - Il valore della variabile definita in modo personalizzato</string>
|
||||
<string name="urlToTrigger">URL da caricare:</string>
|
||||
<string name="urlTooShort">L\'url deve avere almeno 10 caratteri.</string>
|
||||
<string name="usbTetheringFailForAboveGingerbread">Questo molto probabilmente non funzionerà dato che sei su una versione superiore ad Android 2.3. Tuttavia è possibile utilizzare la connessione wifi tethering per attivare la regola.</string>
|
||||
@ -771,4 +779,27 @@
|
||||
<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>
|
||||
<string name="notificationAccessAndroid13">Dopo aver fatto clic su OK, selezionare Automazione, quindi selezionare \"Consenti accesso notifiche\", quindi \"consentire\".\n\nSu alcuni sistemi questa impostazione è disattivata. In questi casi è necessario andare su \"impostazioni\" -> \"app\" -> \"Automazione\" -> menu a 3 punti -> Revoca queste restrizioni. Successivamente ritorno qui.</string>
|
||||
<string name="displayLanguage">Lingua di visualizzazione</string>
|
||||
<string name="displayLanguageSummary">Set a custom language for the application</string>
|
||||
<string name="wifiMonitoringAlsoRequiresThis">Questa autorizzazione è necessaria anche se il trigger utilizza la connessione wifi corrente.</string>
|
||||
<string name="copyTextToClipboard">Copiare testo negli appunti</string>
|
||||
<string name="textToCopy">Testo da copiare</string>
|
||||
<string name="android.permission.SYSTEM_ALERT_WINDOW">Disegna su altre app</string>
|
||||
<string name="overlayPermissionHint">Dopo aver fatto clic su OK, verrai indirizzato a una finestra di dialogo di sistema. Seleziona Automazione lì e consenti il disegno su altre app.</string>
|
||||
<string name="variablesOnlyForTypes">Le variabili sono disponibili solo per i tipi di parametro String e URI</string>
|
||||
<string name="intentParametersHint">Se si desidera specificare un parametro è necessario fare clic anche su \"Aggiungi coppia intento\". In caso contrario, le modifiche non verranno salvate.</string>
|
||||
<string name="languagePolish">Polacco</string>
|
||||
<string name="languageChineseChina">Cinese (Cina)</string>
|
||||
<string name="wifiTriggerDisconnectionHint">Questo trigger sarà valido se ti sei appena disconnesso dal Wi-Fi specificato sopra OPPURE mentre il servizio è ancora in fase di avvio e se non sei connesso a nessuna rete Wi-Fi. Se vuoi che il trigger si attivi solo quando ti stai disconnettendo esplicitamente da una determinata rete Wi-Fi, aggiungi un altro trigger \"il servizio non si avvia\".</string>
|
||||
<string name="className">Nome della classe</string>
|
||||
<string name="startAppByStartForegroundService">di startForegroundService()</string>
|
||||
</resources>
|
||||
|
@ -1,4 +1,12 @@
|
||||
<resources>
|
||||
<string name="languageSystemDefault">Systeemstandaard</string>
|
||||
<string name="languageEnglish">Engels</string>
|
||||
<string name="languageGerman">Duits</string>
|
||||
<string name="languageItalian">Italiaans</string>
|
||||
<string name="languageSpanish">Spaans</string>
|
||||
<string name="languageDutch">Nederlands</string>
|
||||
<string name="languageRussian">Russisch</string>
|
||||
<string name="languageFrench">Frans</string>
|
||||
<string name="ruleActivate">Activering regel %1$s</string>
|
||||
<string name="profileActivate">Activeren profiel %1$s</string>
|
||||
<string name="ruleActivateToggle">Activeren regel %1$s in Togglemode</string>
|
||||
@ -56,7 +64,7 @@
|
||||
<string name="end">Einde</string>
|
||||
<string name="save">Opslaan</string>
|
||||
<string name="urlToTrigger">URL om te activeren:</string>
|
||||
<string name="urlLegend">Variabelen:U kunt de volgende variabelen gebruiken. Bij het triggeren zullen ze worden vervangen door de corresponderende waarde op je apparaat. Zet de haakjes in uw tekst. \n[uniqueid] - Het unieke id van uw apparaat[serialnr] - Het serienummer van uw apparaat (< Android 9)[latitude] - De breedtegraad van uw apparaat[longitude] - De lengtegraad van uw apparaat[phonenr] - Nummer van het laatste inkomende of uitgaande gesprek[d] - Dag van de maand, 2 cijfers met voorloopnullen[m] - Numerieke weergave van een maand, met voorloopnullen[Y] - een volledige numerieke weergave van een jaar, 4 cijfers[h] - 12-uurs indeling van een uur, met voorloopnullen[H] - 24-uurs indeling van een uur, met voorloopnullen[i] - minuten, met voorloopnullen[s] - seconden, met voorloopnullen[ms] - milliseconden[notificationTitle] - titel van de laatste melding[notificationText] - tekst van de laatste melding</string>
|
||||
<string name="urlLegend">Variabelen:U kunt de volgende variabelen gebruiken. Bij het triggeren zullen ze worden vervangen door de corresponderende waarde op je apparaat. Zet de haakjes in uw tekst. \n[uniqueid] - Het unieke id van uw apparaat[serialnr] - Het serienummer van uw apparaat (< Android 9)[latitude] - De breedtegraad van uw apparaat[longitude] - De lengtegraad van uw apparaat[phonenr] - Nummer van het laatste inkomende of uitgaande gesprek[d] - Dag van de maand, 2 cijfers met voorloopnullen[m] - Numerieke weergave van een maand, met voorloopnullen[Y] - een volledige numerieke weergave van een jaar, 4 cijfers[h] - 12-uurs indeling van een uur, met voorloopnullen[H] - 24-uurs indeling van een uur, met voorloopnullen[i] - minuten, met voorloopnullen[s] - seconden, met voorloopnullen[ms] - milliseconden[notificationTitle] - titel van de laatste melding[notificationText] - tekst van de laatste melding\n[variable-VARIABLENAME] - De waarde van uw aangepaste gedefinieerde variabele</string>
|
||||
<string name="wifi">wifi</string>
|
||||
<string name="activating">Activeren</string>
|
||||
<string name="deactivating">Deactiveren</string>
|
||||
@ -110,7 +118,7 @@
|
||||
<string name="soundSettings">Geluidsinstellingen</string>
|
||||
<string name="showHelp">Toon help</string>
|
||||
<string name="rules">Regels</string>
|
||||
<string name="helpTextRules">Alle triggers in een regel zijn EN-verbonden (AND). De regel zal alleen worden toegepast als aan alle triggers is voldaan. Als je OR wilt, maak dan een andere regel.</string>
|
||||
<string name="helpTextRules">Alle triggers in een regel zijn EN-verbonden (AND). De regel zal alleen worden toegepast als aan alle triggers is voldaan. Als je OR wilt, maak dan een andere regel.\nDe termen trigger en condition worden als synoniem gebruikt. Het zijn allemaal voorwaarden, maar de laatste die aan de vereiste waarde voldoet, kan trigger worden genoemd omdat het het laatste stukje van de puzzel is om een regel uit te voeren.</string>
|
||||
<string name="timeframes">Tijdsbestek</string>
|
||||
<string name="helpTextTimeFrame">Als je een regel opgeeft met een tijdsbestek heb je twee keuzes. Je kunt kiezen tussen het binnengaan OF het verlaten van een tijdframe. In beide gevallen wordt een regel slechts eenmaal getriggerd. Dus als je een regel maakt met als trigger "ingaan tijdvak xyz" en je laat je geluidsprofiel veranderen in trillen dan betekent dat niet dat de telefoon automatisch gaat rinkelen als het tijdvak voorbij is. Als je dat wilt moet je een andere regel specificeren met een ander tijdsbestek.</string>
|
||||
<string name="helpTextSound">Op het hoofdscherm kunt u vergrendelingsgeluiden gebruiken om op regels gebaseerde geluidsveranderingen tijdelijk te vermijden. U kunt bijvoorbeeld in een situatie of plaats zijn waar ringtones normaal gesproken ok zijn, maar deze ene keer zou het storend zijn. De functie zal automatisch worden uitgeschakeld zodra de ingestelde tijd is verstreken. Klik op de + knop om de ingestelde tijd toe te voegen. Zodra het actief is kunt u het weer deactiveren met de toggle knop (en op die manier op regels gebaseerde geluidsveranderingen weer inschakelen).</string>
|
||||
@ -769,5 +777,28 @@
|
||||
<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>
|
||||
<string name="notificationAccessAndroid13">Nadat u op OK hebt geklikt, selecteert u Automatisering, selecteert u vervolgens \"Toegang tot meldingen toestaan\" en vervolgens \"toestaan\".</string>
|
||||
<string name="displayLanguage">Taal weergeven</string>
|
||||
<string name="displayLanguageSummary">Een aangepaste taal instellen voor de toepassing</string>
|
||||
<string name="wifiMonitoringAlsoRequiresThis">Deze toestemming is ook vereist als de trigger de huidige wifi-verbinding gebruikt.</string>
|
||||
<string name="copyTextToClipboard">Tekst naar klembord kopiëren</string>
|
||||
<string name="textToCopy">Tekst om te kopiëren</string>
|
||||
<string name="android.permission.SYSTEM_ALERT_WINDOW">Tekenen over andere apps</string>
|
||||
<string name="overlayPermissionHint">Nadat u op OK hebt geklikt, wordt u naar een systeemdialoogvenster gestuurd. Selecteer daar Automatisering en sta tekenen toe over andere apps.</string>
|
||||
<string name="variablesOnlyForTypes">Variabelen zijn alleen beschikbaar voor parametertypen Tekenreeks en URI</string>
|
||||
<string name="intentParametersHint">Als u een parameter wilt opgeven, moet u ook op \"Intentiepaar toevoegen\" klikken. Anders worden uw wijzigingen niet opgeslagen.</string>
|
||||
<string name="languagePolish">Pools</string>
|
||||
<string name="languageChineseChina">Chinees (China)</string>
|
||||
<string name="wifiTriggerDisconnectionHint">Deze trigger is geldig als je net de verbinding met de hierboven gespecificeerde wifi hebt verbroken OF terwijl de service nog aan het starten is en als je niet verbonden bent met wifi. Als je wilt dat de trigger alleen wordt geactiveerd wanneer je expliciet de verbinding met een bepaalde wifi verbreekt, voeg dan nog een trigger toe \"service start niet\".</string>
|
||||
<string name="className">Naam van de klasse</string>
|
||||
<string name="startAppByStartForegroundService">door startForegroundService()</string>
|
||||
|
||||
</resources>
|
||||
|
902
app/src/main/res/values-pl/strings.xml
Normal file
@ -0,0 +1,902 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name" translatable="false">Automation</string>
|
||||
<string name="ruleActivate">Aktywowanie reguły %1$s</string>
|
||||
<string name="profileActivate">Aktywowanie profilu %1$s</string>
|
||||
<string name="ruleActivateToggle">Aktywowanie reguły %1$s w trybie naprzemiennym</string>
|
||||
<string name="addPoi">Dodaj lokalizację</string>
|
||||
<string name="addRule">Dodaj regułę</string>
|
||||
<string name="poiList">Lista lokalizacji:</string>
|
||||
<string name="ruleList">Lista reguł:</string>
|
||||
<string name="pleaseEnterValidName">Wpisz poprawną nazwę.</string>
|
||||
<string name="pleaseSpecifiyTrigger">Określ co najmniej jeden wyzwalacz.</string>
|
||||
<string name="pleaseSpecifiyAction">Określ co najmniej jedną akcję.</string>
|
||||
<string name="serviceWontStart">Nie zdefiniowano reguł. Automatyzacja nie wystartuje.</string>
|
||||
<string name="serviceStarted">Serwis automatyzacji uruchomiony.</string>
|
||||
<string name="version">Wersja %1$s.</string>
|
||||
<string name="logServiceStarting" translatable="false">Starting service.</string>
|
||||
<string name="logNotAllMeasurings" translatable="false">Don\'t have all location measurings, yet. Can\'t do comparison.</string>
|
||||
<string name="distanceBetween">Odległość między lokalizacją GPS a lokalizacją w sieci wynosi %1$d metrów. Ten +1m powinien być absolutnym minimalnym promieniem.</string>
|
||||
<string name="comparing" translatable="false">Have both network and gps location. Comparing...</string>
|
||||
<string name="logNoSuitableProvider" translatable="false">No suitable location providers could be used.</string>
|
||||
<string name="positioningWindowNotice">Jeśli znajdujesz się w budynku, zdecydowanie zaleca się umieszczenie urządzenia obok okna, aż do znalezienia odpowiedniej pozycji. W przeciwnym razie znalezienie go może zająć bardzo dużo czasu.</string>
|
||||
<string name="gettingPosition">Ustalanie pozycji. Czekaj...</string>
|
||||
<string name="logGettingPositionWithProvider" translatable="false">Requesting location using provider:</string>
|
||||
<string name="yes">Tak</string>
|
||||
<string name="no">Nie</string>
|
||||
<string name="logGotGpsUpdate" translatable="false">Got GPS update. Accuracy:</string>
|
||||
<string name="logGotNetworkUpdate" translatable="false">Got network update. Accuracy:</string>
|
||||
<string name="pleaseEnterValidLatitude">Wpisz prawidłową szerokość geograficzą.</string>
|
||||
<string name="pleaseEnterValidLongitude">Wpisz prawidłową długość geograficzną</string>
|
||||
<string name="pleaseEnterValidRadius">Wprowadź poprawny dodatni promień.</string>
|
||||
<string name="selectOneDay">Wybierz co najmniej jeden dzień.</string>
|
||||
<string name="logAttemptingToBindToService" translatable="false">Attempting to bind to service... </string>
|
||||
<string name="logAttemptingToUnbindFromService" translatable="false">Attempting to unbind from service... </string>
|
||||
<string name="logBoundToService" translatable="false">Bound to service.</string>
|
||||
<string name="logUnboundFromService" translatable="false">Unbound from service.</string>
|
||||
<string name="logServiceAlreadyRunning" translatable="false">Request to start service, but it is already running.</string>
|
||||
<string name="whatToDoWithRule">Co zrobić z regułą?</string>
|
||||
<string name="whatToDoWithPoi">Co zrobić z lokalizacją?</string>
|
||||
<string name="whatToDoWithProfile">Co zrobić z profilem?</string>
|
||||
<string name="delete">usuńe</string>
|
||||
<string name="deleteCapital">Usuń</string>
|
||||
<string name="serviceStopped">Automatyzacja zatrzymana..</string>
|
||||
<string name="logServiceStopping">Zatrzymywanie automatyzacji.</string>
|
||||
<string name="stillGettingPosition">Wciąż zajmuje pozycję</string>
|
||||
<string name="lastRule">Ostatnia reguła:</string>
|
||||
<string name="at">Na</string>
|
||||
<string name="service">Serwis:</string>
|
||||
<string name="getCurrentPosition">Uzyskaj obecną lokalizację</string>
|
||||
<string name="savePoi">Zapisz lokalizację</string>
|
||||
<string name="deletePoi">Usuń lokalizację</string>
|
||||
<string name="latitude">Szerokość geograficzna</string>
|
||||
<string name="longitude">Długość geograficzna</string>
|
||||
<string name="ruleName">Nazwa reguły</string>
|
||||
<string name="triggers">Wyzwalacz(e)</string>
|
||||
<string name="triggersComment">i połączone (wszystkie muszą obowiązywać w tym samym czasie)</string>
|
||||
<string name="addTrigger">Dodaj wyzwalacz(e)</string>
|
||||
<string name="actions">Akcja(e)</string>
|
||||
<string name="actionsComment">(zostanie wykonany w tej kolejności)</string>
|
||||
<string name="addAction">Dodaj akcję</string>
|
||||
<string name="saveRule">Zapisz regułę</string>
|
||||
<string name="monday">Poniedziałek</string>
|
||||
<string name="tuesday">Wtorek</string>
|
||||
<string name="wednesday">Środa</string>
|
||||
<string name="thursday">Czwartek</string>
|
||||
<string name="friday">Piątek</string>
|
||||
<string name="saturday">Sobtoa</string>
|
||||
<string name="sunday">Niedziela</string>
|
||||
<string name="start">Start</string>
|
||||
<string name="end">Koniec</string>
|
||||
<string name="save">Zapisz</string>
|
||||
<string name="urlToTrigger">Adres URL do uruchomienia:</string>
|
||||
<string name="urlLegend">Zmienne:\nMożesz użyć następujących zmiennych. Po uruchomieniu zostaną one zastąpione odpowiednią wartością na Twoim urządzeniu. Umieść nawiasy w tekście.\n\n[uniqueid] – unikalny identyfikator Twojego urządzenia\n[serialnr] – numer seryjny Twojego urządzenia (< Android 9)\n[latitude] – Twoje urządzenie\ szerokość geograficzna użytkownika\n[longitude] – długość geograficzna Twojego urządzenia\n[phonenr] – numer ostatniego połączenia przychodzącego lub wychodzącego\n[d] – dzień miesiąca, 2 cyfry z zerami na początku\n[m] – Numeryczna reprezentacja miesiąca z zerami na początku\n[Y] — pełna cyfrowa reprezentacja roku, 4 cyfry\n[h] — godzina w formacie 12-godzinnym z zerami na początku\n[H] — format 24-godzinny format godziny z wiodącymi zerami\n[i] - minuty z wiodącymi zerami\n[s] - sekundy z wiodącymi zerami\n[ms] - milisekundy\n[notificationTitle] - tytuł ostatniego powiadomienia\n[notificationText] - tekst ostatniego powiadomienia\n[variable-VARIABLENAME] - Wartość niestandardowej zmiennej zdefiniowanej przez Ciebie</string>
|
||||
<string name="wifi">wifi</string>
|
||||
<string name="activating">Aktywowanie</string>
|
||||
<string name="deactivating">Dezaktywowanie</string>
|
||||
<string name="bluetoothFailed">Nie udało się uruchomić Bluetooth. Czy to urządzenie ma Bluetooth?</string>
|
||||
<string name="urlTooShort">Adres URL musi mieć co najmniej 10 znaków.</string>
|
||||
<string name="enterPhoneNumberAndText">Podaj numer i tekst.</string>
|
||||
<string name="selectTypeOfTrigger">Wybierz typ wyzwalacza</string>
|
||||
<string name="entering">wchodzenie</string>
|
||||
<string name="leaving">opuszczanie</string>
|
||||
<string name="noPoisSpecified">Nie określiłeś żadnych lokalizacji. Zrób to najpierw.</string>
|
||||
<string name="started">uruchomiony</string>
|
||||
<string name="stopped">zatrzymany</string>
|
||||
<string name="connected">połączony</string>
|
||||
<string name="disconnected">rozłączony</string>
|
||||
<string name="selectPoi">Wybierz lokalizację</string>
|
||||
<string name="selectTypeOfAction">Wybierz typ akcji</string>
|
||||
<string name="selectSoundProfile">Wybierz dźwięk profilu</string>
|
||||
<string name="whatToDoWithTrigger">Co zrobić z wyzwalaczem?</string>
|
||||
<string name="whatToDoWithAction">Co zrobić z akcją??</string>
|
||||
<string name="radiusHasToBePositive">Promień musi być liczbą dodatnią.</string>
|
||||
<string name="poiStillReferenced">Nadal istnieją reguły odnoszące się do tej lokalizacji (%1$s). Nie mogę go jeszcze usunąć.</string>
|
||||
<string name="generalSettings">Główne ustawienia</string>
|
||||
<string name="startAtSystemBoot">Uruchom przy starcie systemu</string>
|
||||
<string name="onOff">On/Off</string>
|
||||
<string name="writeLogFile">Zapisz plik dziennika</string>
|
||||
<string name="useTextToSpeechOnNormalSummary">Użyj TTS w trybie normalnym</string>
|
||||
<string name="useTextToSpeechOnVibrateSummary">Użyj TTS w trybie wibrajcji</string>
|
||||
<string name="useTextToSpeechOnSilentSummary">Użyj TTS w trybie cichym</string>
|
||||
<string name="useTextToSpeechOnNormalTitle">TTS w trybie normalnym</string>
|
||||
<string name="useTextToSpeechOnVibrateTitle">TTS w trybie wibracji</string>
|
||||
<string name="useTextToSpeechOnSilentTitle">TTS w trybie cichym</string>
|
||||
<string name="positioningSettings">Ustawienia pozycjonowania</string>
|
||||
<string name="listenToWifiState">Słuchaj zmian stanu Wi-Fi, jeśli to możliwe</string>
|
||||
<string name="wifiState">Stan WiFi</string>
|
||||
<string name="listenToAccelerometerState">Obserwuj ruch urządzenia tam, gdzie Wi-Fi nie jest dostępne</string>
|
||||
<string name="accelerometer">Akcelerometr</string>
|
||||
<string name="accelerometerTimer">Użyj akcelerometru po x minutach bez zmiany masztu wieży</string>
|
||||
<string name="cellMastIdleTime">Czas bezczynności wieży komórkowej</string>
|
||||
<string name="accelerometerThresholdDescription">Próg ruchów akcelerometru</string>
|
||||
<string name="accelerometerThreshold">Próg akcelerometru</string>
|
||||
<string name="positioningThresholds">Progi pozycjonowania</string>
|
||||
<string name="minimumDistanceChangeForGpsLocationUpdates">Minimalna zmiana odległości dla aktualizacji lokalizacji GPS</string>
|
||||
<string name="distanceForGpsUpdate">Dystans do aktualizacji GPS [m]</string>
|
||||
<string name="minimumDistanceChangeForNetworkLocationUpdates">Zmiana minimalnej odległości dla aktualizacji lokalizacji sieciowej</string>
|
||||
<string name="distanceForNetworkUpdate">Dystans do aktualizacji sieci [m]</string>
|
||||
<string name="satisfactoryAccuracyGps">Zadowalająca dokładność podczas uzyskiwania lokalizacji za pomocą GPS w metrach</string>
|
||||
<string name="gpsAccuracy">Dokładność GPS [m]</string>
|
||||
<string name="satisfactoryAccuracyNetwork">Zadowalająca dokładność uzyskiwania lokalizacji za pośrednictwem masztów komórkowych w metrach</string>
|
||||
<string name="networkAccuracy">Dokładność sieci [m]</string>
|
||||
<string name="minimumTimeForLocationUpdates">Minimalna zmiana czasu w milisekundach dla aktualizacji lokalizacji</string>
|
||||
<string name="timeForUpdate">Czas do aktualizacji [milliseconds]</string>
|
||||
<string name="soundSettings">Ustawienia dźwięku</string>
|
||||
<string name="showHelp">Pokaż pomoc</string>
|
||||
<string name="rules">Reguły</string>
|
||||
<string name="helpTextRules">Wszystkie wyzwalacze w regule są połączone operatorem AND. Reguła zostanie zastosowana tylko wtedy, gdy zostaną spełnione wszystkie warunki wyzwalające. Jeśli chcesz LUB, utwórz inną regułę.\nWyzwalacz i warunek są używane zamiennie. Wszystkie z nich są warunkami, ale ostatni, który spełnia wymaganą wartość, można nazwać wyzwalaczem, ponieważ jest to ostatni element układanki, który powoduje wykonanie reguły.</string>
|
||||
<string name="timeframes">Ramy czasowe</string>
|
||||
<string name="helpTextTimeFrame">Jeśli określisz regułę z przedziałem czasowym, masz dwie możliwości. Możesz wybrać między wprowadzeniem LUB opuszczeniem przedziału czasowego. Tak czy inaczej reguła jest uruchamiana tylko raz. Więc jeśli utworzysz regułę, która jako wyzwalacz ma „wprowadzanie przedziału czasowego xyz” i pozwolisz jej zmienić profil dźwiękowy na wibracje, nie oznacza to, że telefon automatycznie zadzwoni, gdy przedział czasowy się skończy. Jeśli chcesz, musisz określić inną regułę z innym przedziałem czasowym.</string>
|
||||
<string name="helpTextSound">On the main screen you can use lock sound changes to temporarily avoid rule based sound changes. E.g. you may be in a situation or place where usually ringtones are ok, but this one time it would be disturbing. The feature will automatically deactivate once the configured time has elapsed. Click the + button to add the given amount of time. Once it is active you may deactivate it again using the toggle button (and that way enable rule based sound changes again).</string>
|
||||
<string name="toggableRules">Zasady naprzemienności</string>
|
||||
<string name="helpTextToggable">Reguły mają flagę o nazwie \"Toggable\". Oznacza to, że jeśli reguła zostanie wykonana, a następnie ponownie zostaną zastosowane te same wyzwalacze, reguła zostanie wykonana w odwrotnym trybie, jeśli ma to zastosowanie. Obecnie będzie to miało miejsce tylko w połączeniu z tagami NFC. Jeśli stukniesz je dwukrotnie i jest z nimi powiązana reguła, którą można przełączać, zrobi to odwrotnie niż w obecnej sytuacji, np. dezaktywuj Wi-Fi, jeśli jest aktualnie włączone.</string>
|
||||
<string name="helpTextProcessMonitoring">Jeśli określisz regułę za pomocą monitora procesu, aplikacja będzie sprawdzać ten proces co x sekund (możesz to zmienić w ustawieniach). Wiem, że może to być trochę powolne, ale ciągłe monitorowanie spowodowałoby zbyt szybkie wyczerpanie baterii. I nie ma transmisji z systemu operacyjnego dla tego wydarzenia.</string>
|
||||
<string name="helpTitleEnergySaving">Oszczędzanie energii</string>
|
||||
<string name="helpTextEnergySaving">Wielu producentów urządzeń z systemem Android stara się oszczędzać energię, ograniczając działanie uruchomionych aplikacji w tle. Niestety często powoduje to, że te aplikacje nie działają poprawnie, wśród nich jest Automation. Zobacz tę <a href="https://dontkillmyapp.com/">webpage</a>, aby dowiedzieć się, jak wykluczyć automatyzację z tych środków.</string>
|
||||
<string name="speedMaximumTimeBetweenLocations">Maksymalny czas między 2 lokalizacjami dla określenia prędkości.</string>
|
||||
<string name="speedMaximumTime">Czas w minutach</string>
|
||||
<string name="exceeds">przekracza</string>
|
||||
<string name="dropsBelow">spada poniżej</string>
|
||||
<string name="settingsCategoryNoiseLevelMeasurements">Pomiar poziomu hałasu</string>
|
||||
<string name="timeBetweenNoiseLevelMeasurementsSummary">Sekundy między pomiarami poziomu hałasu</string>
|
||||
<string name="timeBetweenNoiseLevelMeasurementsTitle">Sekundy między pomiarami poziomu hałasu</string>
|
||||
<string name="lengthOfNoiseLevelMeasurementsSummary">Długość w sekundach dla każdego pomiaru poziomu hałasu</string>
|
||||
<string name="lengthOfNoiseLevelMeasurementsTitle">Długość każdego pomiaru poziomu hałasu</string>
|
||||
<string name="referenceValueForNoiseLevelMeasurementsSummary">Fizyczna wartość odniesienia dla pomiaru poziomu hałasu</string>
|
||||
<string name="referenceValueForNoiseLevelMeasurementsTitle">Odniesienie do pomiaru hałasu</string>
|
||||
<string name="logLevelSummary">Poziom rejestrowania (1=minimalny, 5=maksymalny)</string>
|
||||
<string name="logLevelTitle">Poziom rejestrowania</string>
|
||||
<string name="ruleActive">Reguła aktywna</string>
|
||||
<string name="triggerPointOfInterest">Lokalizacja</string>
|
||||
<string name="triggerTimeFrame">Ramy czasowe</string>
|
||||
<string name="triggerCharging">Ładowanie baterii</string>
|
||||
<string name="triggerUsb_host_connection">Połączenie USB z komputerem</string>
|
||||
<string name="triggerSpeed">Prędkość</string>
|
||||
<string name="triggerNoiseLevel">Poziom hałasu w tle</string>
|
||||
<string name="actionSetWifi">Wifi</string>
|
||||
<string name="actionSetBluetooth">Bluetooth</string>
|
||||
<string name="actionSetUsbTethering">USB Tethering</string>
|
||||
<string name="actionSetWifiTethering">Wifi Tethering</string>
|
||||
<string name="actionSetBluetoothTethering">Bluetooth Tethering</string>
|
||||
<string name="actionSetDisplayRotation">Obrót wyświetlacza</string>
|
||||
<string name="actionTurnWifiOn">włącz WiFi</string>
|
||||
<string name="actionTurnWifiOff">wyłącz WiFi</string>
|
||||
<string name="actionTurnBluetoothOn">włącz Bluetooth</string>
|
||||
<string name="actionTurnBluetoothOff">wyłącz Bluetooth</string>
|
||||
<string name="actionTriggerUrl">Uruchom URL</string>
|
||||
<string name="actionChangeSoundProfile">Zmień profil dźwięku</string>
|
||||
<string name="actionTurnUsbTetheringOn">włącz USB Tethering</string>
|
||||
<string name="actionTurnUsbTetheringOff">wyłącz USB Tethering</string>
|
||||
<string name="actionTurnWifiTetheringOn">włącz Wifi Tethering</string>
|
||||
<string name="actionTurnWifiTetheringOff">wyłącz Wifi Tethering</string>
|
||||
<string name="actionTurnBluetoothTetheringOn">włącz Bluetooth Tethering</string>
|
||||
<string name="actionTurnBluetoothTetheringOff">wyłącz Bluetooth Tethering</string>
|
||||
<string name="actionTurnAirplaneModeOn">włącz tryb samolotowy</string>
|
||||
<string name="actionTurnAirplaneModeOff">wyłącz tryb samolotowy</string>
|
||||
<string name="actionEnableScreenRotation">włączyć obracanie ekranu</string>
|
||||
<string name="actionDisableScreenRotation">wyłączyć obracanie ekranu</string>
|
||||
<string name="screenRotationEnabled">Obracanie ekranu włączone.</string>
|
||||
<string name="screenRotationDisabled">Obracanieekranu wyłączone.</string>
|
||||
<string name="screenRotationAlreadyEnabled">Obracanie ekranu jest już włączone.</string>
|
||||
<string name="screenRotationAlreadyDisabled">Obracanie ekranu jest już wyłączone.</string>
|
||||
<string name="noPoisDefinedShort">Brak zdefiniowanych lokalizacji.</string>
|
||||
<string name="activePoi">Aktywna lokalizacja:</string>
|
||||
<string name="closestPoi">Najbliższa lokalizacja:</string>
|
||||
<string name="overview">Przegląd</string>
|
||||
<string name="poi">Lokalizacja</string>
|
||||
<string name="pois">Lokalizacje</string>
|
||||
<string name="helpTextPoi">Lokalizacja składa się ze współrzędnych GPS i promienia. Ponieważ pozycjonowanie za pomocą masztów komórkowych jest raczej nieprecyzyjne (ale szybkie i tanie), nie należy określać zbyt małego promienia. Aplikacja zaproponuje Ci minimalny promień podczas tworzenia nowej lokalizacji.</string>
|
||||
<string name="serviceNotRunning">Usługa nie działa.</string>
|
||||
<string name="general">Ogólne</string>
|
||||
<string name="generalText">Aby korzystać z tego programu, musisz skonfigurować reguły. Zawierają wyzwalacze, np. jeśli dotrzesz do określonego obszaru lub wejdziesz w określony czas. Po zakończeniu kliknij przycisk włączania/wyłączania na ekranie głównym.</string>
|
||||
<string name="unknownActionSpecified" translatable="false">Unknown action specified</string>
|
||||
<string name="logErrorTriggeringUrl" translatable="false">Error triggering URL</string>
|
||||
<string name="errorChangingScreenRotation" translatable="false">Error changing screen rotation</string>
|
||||
<string name="errorDeterminingWifiApState" translatable="false">Error determining wifiAp state</string>
|
||||
<string name="errorActivatingWifiAp" translatable="false">Error activating wifiAp</string>
|
||||
<string name="failedToTriggerBluetooth">Nie udało się uruchomić Bluetooth. Czy to urządzenie ma Bluetooth?</string>
|
||||
<string name="logAttemptingDownloadOf" translatable="false">attempting download of</string>
|
||||
<string name="logErrorGettingConnectionManagerService" translatable="false">Error getting connectionManager service. Not doing anything to UsbTethering.</string>
|
||||
<string name="logErrorDeterminingCurrentUsbTetheringState" translatable="false">Error determining current UsbTethering state.</string>
|
||||
<string name="logDetectingTetherableUsbInterface" translatable="false">Detecting tetherable usb interface.</string>
|
||||
<string name="logClearingBothLocationListeners" translatable="false">Clearing both location listeners.</string>
|
||||
<string name="logStartingServiceAfterAppUpdate" translatable="false">Starting service after app update.</string>
|
||||
<string name="logNotStartingServiceAfterAppUpdate" translatable="false">Not starting service after app update.</string>
|
||||
<string name="logStartingServiceAtPhoneBoot" translatable="false">Starting service at phone boot.</string>
|
||||
<string name="logNotStartingServiceAtPhoneBoot" translatable="false">Not starting service at phone boot.</string>
|
||||
<string name="applicationHasBeenUpdated" translatable="false">Application has been updated.</string>
|
||||
<string name="startServiceAfterAppUpdate">Uruchom usługę automatycznie po aktualizacji aplikacji, jeśli była wcześniej uruchomiona.</string>
|
||||
<string name="startServiceAfterAppUpdateShort">Uruchom usługę po aktualizacji.</string>
|
||||
<string name="wifiConnection">Połączenie WiFi</string>
|
||||
<string name="wifiName">Nazwa WiFi</string>
|
||||
<string name="enterWifiName">Wprowadź nazwę Wi-Fi. Pozostaw puste dla dowolnej sieci Wi-Fi.</string>
|
||||
<string name="cancel">Anuluj</string>
|
||||
<string name="ruleDoesntApplyWeAreSlowerThan" translatable="false">Rule %1$s doesn\'t apply. We are slower than</string>
|
||||
<string name="ruleDoesntApplyWeAreFasterThan" translatable="false">Rule %1$s doesn\'t apply. We are faster than</string>
|
||||
<string name="ruleDoesntApplyItsQuieterThan" translatable="false">Rule %1$s doesn\'t apply. It\'s quieter than</string>
|
||||
<string name="ruleDoesntApplyItsLouderThan" translatable="false">Rule %1$s doesn\'t apply. It\'s louder than</string>
|
||||
<string name="ruleDoesntApplyBatteryLowerThan" translatable="false">Rule %1$s doesn\'t apply. Battery level is lower than</string>
|
||||
<string name="ruleDoesntApplyBatteryHigherThan" translatable="false">Rule %1$s doesn\'t apply. Battery level is higher than</string>
|
||||
<string name="ruleDoesntApplyNotTheCorrectSsid" translatable="false">Rule %1$s doesn\'t apply. Not the correct SSID (demanded: \"%2$s\", given: \"%3$s\").</string>
|
||||
<string name="ruleDoesntApplyNoTagLabel" translatable="false">Rule %1$s doesn\'t apply. There is no tag label or not tag at all.</string>
|
||||
<string name="ruleDoesntApplyWrongTagLabel" translatable="false">Rule %1$s doesn\'t apply. Wrong tag label.</string>
|
||||
<string name="ruleIsDeactivatedCantApply" translatable="false">Rule %1$s is deactivated, can\'t apply.</string>
|
||||
<string name="starting">uruchamianie</string>
|
||||
<string name="stopping">wyłączanie</string>
|
||||
<string name="connecting">łączenie</string>
|
||||
<string name="disconnecting">rozłączanie</string>
|
||||
<string name="exceeding">nadzwyczajny</string>
|
||||
<string name="droppingBelow">spadając poniżej</string>
|
||||
<string name="connectedToWifi">Połączony do wifi \"%1$s\"</string>
|
||||
<string name="disconnectedFromWifi">rozłączony z wifi \"%1$s\"</string>
|
||||
<string name="anyWifi">dowlona wifi</string>
|
||||
<string name="cantStopIt">Nie mogę tego zatrzymać.</string>
|
||||
<string name="settingsCategoryHttp">Żądanie HTTPs</string>
|
||||
<string name="httpAcceptAllCertificatesTitle">Akceptuj wszystkie certyfikaty</string>
|
||||
<string name="httpAcceptAllCertificatesSummary">Pomiń sprawdzanie ważności certyfikatów SSL (aktywowanie tego jest odradzane)</string>
|
||||
<string name="httpAttemptsSummary">Liczba prób w przypadku niepowodzenia żądań HTTP z powodu łączności</string>
|
||||
<string name="httpAttemptsTitle">Liczba prób HTTP</string>
|
||||
<string name="httpAttemptsTimeoutSummary">Limit czasu dla żądań HTTP [sekundy]</string>
|
||||
<string name="httpAttemptsTimeoutTitle">Limit czasu [sec]</string>
|
||||
<string name="httpAttemptGapSummary">Pauza przed kolejną próbą [sekundy]</string>
|
||||
<string name="httpAttemptGapTitle">Pauza [sec]</string>
|
||||
<string name="runManually">Uruchom ręcznie</string>
|
||||
<string name="serviceHasToRunForThat">W tym celu usługa musi działać.</string>
|
||||
<string name="gpsComparison">Porównanie GPS</string>
|
||||
<string name="gpsComparisonTimeoutStop" translatable="false">Stopping comparison GPS measurement due to timeout.</string>
|
||||
<string name="timeoutForGpsComparisonsTitle">Przekroczenie czasu GPS [sec]</string>
|
||||
<string name="timeoutForGpsComparisonsSummary">Maksymalny czas w sekundach do próby uzyskania lokalizacji GPS do porównania. Jeśli zostanie zastosowana ostatnia znana lokalizacja.</string>
|
||||
<string name="startingGpsTimeout" translatable="false">Starting GPS timeout.</string>
|
||||
<string name="forcedLocationUpdate" translatable="false">Forced location update</string>
|
||||
<string name="forcedLocationUpdateLong" translatable="false">Due to timeout in comparison measurement the last best location will be applied.</string>
|
||||
<string name="rememberLastActivePoiSummary">Jeśli jesteś w miejscu, uruchom ponownie urządzenie lub aplikację i opuść lokalizację, aplikacja uruchomi reguły związane z opuszczeniem lokalizacji przy następnym uruchomieniu.</string>
|
||||
<string name="rememberLastActivePoiTitle">Zapamiętaj ostatnią aktywną lokalizację</string>
|
||||
<string name="muteTextToSpeechDuringCallsTitle">Wycisz podczas połączeń</string>
|
||||
<string name="muteTextToSpeechDuringCallsSummary">Wycisz funkcję TextToSpeech podczas połączeń</string>
|
||||
<string name="anotherPoiByThatName">Istnieje już inna lokalizacja o tej nazwie.</string>
|
||||
<string name="anotherRuleByThatName">Istnieje już inna reguła o tej nazwie.</string>
|
||||
<string name="startOtherActivity">Uruchom inny program</string>
|
||||
<string name="selectApplication">Wybierz apkę</string>
|
||||
<string name="selectPackageOfApplication">Wybierz pakiet aplikacji</string>
|
||||
<string name="selectActivityToBeStarted">Wybierz aktywność wybranego pakietu</string>
|
||||
<string name="errorStartingOtherActivity">Błąd podczas uruchamiania innej czynności</string>
|
||||
<string name="anotherAppIsRunning">Inna aplikacja jest uruchamiana/zatrzymywana</string>
|
||||
<string name="settingsCategoryProcessMonitoring">Monitorowanie procesu</string>
|
||||
<string name="timeBetweenProcessMonitoringsTitle">Sekundy między monitorowaniem procesu</string>
|
||||
<string name="timeBetweenProcessMonitoringsSummary">Im niższe, tym większe zużycie baterii</string>
|
||||
<string name="refreshingProcessList" translatable="false">Refreshing process list.</string>
|
||||
<string name="processes">Processes</string>
|
||||
<string name="startingPeriodicProcessMonitoringEngine" translatable="false">Starting periodic process monitoring engine.</string>
|
||||
<string name="processMonitoring">Monitorowanie procesu</string>
|
||||
<string name="periodicProcessMonitoringIsAlreadyRunning" translatable="false">Periodic process monitoring is already running. Won\'t start it again.</string>
|
||||
<string name="stoppingPeriodicProcessMonitoringEngine" translatable="false">Stopping periodic process monitoring engine.</string>
|
||||
<string name="periodicProcessMonitoringIsNotActive" translatable="false">Periodic process monitoring is not active. Can\'t stop it.</string>
|
||||
<string name="periodicProcessMonitoringStarted" translatable="false">Periodic process monitoring started.</string>
|
||||
<string name="periodicProcessMonitoringStopped" translatable="false">Periodic process monitoring stopped.</string>
|
||||
<string name="rearmingProcessMonitoringMessage" translatable="false">Rearming process monitoring message.</string>
|
||||
<string name="notRearmingProcessMonitoringMessageStopRequested" translatable="false">Not rearming process monitoring message, stop requested.</string>
|
||||
<string name="messageReceivedStatingProcessMonitoringIsComplete" translatable="false">Message received stating process monitoring is complete.</string>
|
||||
<string name="appStarted" translatable="false">App started.</string>
|
||||
<string name="appStopped" translatable="false">App stopped.</string>
|
||||
<string name="runningApp" translatable="false">Running app</string>
|
||||
<string name="errorWritingSettingsToPersistentMemory" translatable="false">Error writing settings to persistent memory.</string>
|
||||
<string name="settings">Settings</string>
|
||||
<string name="writingSettingsToPersistentMemory" translatable="false">Writing settings to persistent memory.</string>
|
||||
<string name="refreshingSettingsFromFileToMemory" translatable="false">Refreshing settings from file to memory.</string>
|
||||
<string name="errorReadingSettings" translatable="false">Error reading settings.</string>
|
||||
<string name="invalidStuffStoredInSettingsErasing" translatable="false">Invalid stuff stored in settings. Erasing settings...</string>
|
||||
<string name="initializingSettingsToPersistentMemory" translatable="false">Initializing settings to persistent memory.</string>
|
||||
<string name="errorInitializingSettingsToPersistentMemory" translatable="false">Error initializing settings to persistent memory.</string>
|
||||
<string name="settingsErased">Ustawienia usunięte.</string>
|
||||
<string name="settingsSetToDefault">Ustawienia ustawione na domyślne.</string>
|
||||
<string name="batteryLevel">Poziom baterii</string>
|
||||
<string name="selectSpeed">Wybierz prędkość</string>
|
||||
<string name="selectBattery">Wybierz poziom naładowania baterii</string>
|
||||
<string name="applyingSettingsAndRules" translatable="false">Applying settings, rules and locations.</string>
|
||||
<string name="privacy">Polityka prywatności</string>
|
||||
<string name="privacyConfirmationText">Przeglądarka otworzy się teraz na Twoim urządzeniu i załaduje politykę prywatności ze strony dewelopera.</string>
|
||||
<string name="waitBeforeNextAction">Poczekaj przed następną czynnością</string>
|
||||
<string name="wakeupDevice">Wybudź urządzenie</string>
|
||||
<string name="waitBeforeNextActionEnterValue">Wprowadź wartość w milisekundach, jak długo należy czekać przed następną akcją.</string>
|
||||
<string name="wakeupDeviceValue">Wprowadź wartość w milisekundach, jak długo urządzenie powinno pozostawać w stanie czuwania. 0 dla wartości domyślnych.</string>
|
||||
<string name="enterAPositiveValidNonDecimalNumber">wprowadź prawidłową dodatnią liczbę inną niż dziesiętna.</string>
|
||||
<string name="moveUp">Do góry</string>
|
||||
<string name="moveDown">Do dołu</string>
|
||||
<string name="cantMoveUp">Nie można przenieść elementu w górę. Jest już na szczycie.</string>
|
||||
<string name="cantMoveDown">Nie można przenieść elementu w dół. Jest już na dnie.</string>
|
||||
<string name="wifiNameSpecifiedCheckingThat" translatable="false">Wifi name specified, checking that.</string>
|
||||
<string name="wifiNameMatchesRuleWillApply" translatable="false">Wifi name matches. Rule will apply.</string>
|
||||
<string name="noWifiNameSpecifiedAnyWillDo" translatable="false">No wifi name specified, any will do.</string>
|
||||
<string name="ruleCheckOf" translatable="false">RuleCheck of %1$s</string>
|
||||
<string name="airplaneMode">Tryb samolotowy</string>
|
||||
<string name="activate">Aktywowany</string>
|
||||
<string name="deactivate">Dezaktywowany</string>
|
||||
<string name="airplaneModeSdk17Warning">Począwszy od wersji Androida 4.2 ta funkcja działa tylko wtedy, gdy urządzenie jest zrootowane.</string>
|
||||
<string name="triggerUrlReplacementPositionError" translatable="false">You asked for a position to be added to your URL. Unfortunately at this point I do not have any location, yet.</string>
|
||||
<string name="addIntentValue">Dodaj parę intencji</string>
|
||||
<string name="parameterName">Parameter nazwa</string>
|
||||
<string name="parameterValue">Parameter wartość</string>
|
||||
<string name="parameterType">Parameter typ</string>
|
||||
<string name="selectTypeOfIntentPair">Wybierz typ dla pary intencji.</string>
|
||||
<string name="enterNameForIntentPair">Wprowadź nazwę pary intencji.</string>
|
||||
<string name="enterValueForIntentPair">Wprowadź wartość dla pary intencji.</string>
|
||||
<string name="whatToDoWithIntentPair">Co zrobić z parą?</string>
|
||||
<string name="gettingListOfInstalledApplications">Pobieranie listy zainstalowanych aplikacji...</string>
|
||||
<string name="timeFrameWhichDays">W które dni?</string>
|
||||
<string name="insideOrOutsideTimeFrames">Wewnątrz lub poza tymi ramami czasowymi?</string>
|
||||
<string name="selectToggleDirection">Włączyć czy wyłączyć?</string>
|
||||
<string name="name">Nazwa</string>
|
||||
<string name="radiusWithUnit">Promień [m]</string>
|
||||
<string name="status">Status</string>
|
||||
<string name="actionDataConnection">Dane mobilne</string>
|
||||
<string name="actionSetDataConnectionOn">włącz komórkową transmisję danych</string>
|
||||
<string name="actionSetDataConnectionOff">wyłącz komórkową transmisję danych</string>
|
||||
<string name="roaming">Roaming</string>
|
||||
<string name="activated">aktywowany</string>
|
||||
<string name="deactivated">dezaktywowany</string>
|
||||
<string name="until">dopóki</string>
|
||||
<string name="application">Aplikacja</string>
|
||||
<string name="is">jest</string>
|
||||
<string name="phoneCall">Połączenie telefonicznel</string>
|
||||
<string name="with">z</string>
|
||||
<string name="phoneNumber">Numer</string>
|
||||
<string name="enterPhoneNumberBlankForAny">Wpisz numer telefonu. Pozostaw puste dla dowolnej numeru.</string>
|
||||
<string name="enterPhoneNumber">Podaj numer.</string>
|
||||
<string name="phoneDirection">Wybierz\nkierunek połączenia</string>
|
||||
<string name="any">dowolny</string>
|
||||
<string name="incoming">przychodzące</string>
|
||||
<string name="outgoing">wychodzące</string>
|
||||
<string name="incomingAdjective">przychodzące</string>
|
||||
<string name="outgoingAdjective">wychodzące</string>
|
||||
<string name="anyNumber">dowolny numer</string>
|
||||
<string name="number">number</string>
|
||||
<string name="nfcTag">NFC tag</string>
|
||||
<string name="closeTo">blisko</string>
|
||||
<string name="withLabel">z etykietą</string>
|
||||
<string name="deviceDoesNotHaveNfc">Wygląda na to, że to urządzenie nie ma NFC.</string>
|
||||
<string name="nfcReadTag">Odczytaj identyfikator z tagu</string>
|
||||
<string name="nfcWriteTag">Zapisz tag</string>
|
||||
<string name="nfcEnterValidIdentifier">Wpisz prawidłowy identyfikator tagu (np. \"Drzwi wejściowe do domu\").</string>
|
||||
<string name="nfcTagWrittenSuccessfully">Tag zapisany.</string>
|
||||
<string name="nfcTagWriteError">Błąd podczas zapisania tagu. Czy jest w zasięgu?</string>
|
||||
<string name="nfcTagDiscovered">Odkryto tag.</string>
|
||||
<string name="nfcBringTagIntoRange">Umieść tag NFC w zasięgu.</string>
|
||||
<string name="nfcTagFoundWithText">Znaleziono tag z tekstem:</string>
|
||||
<string name="nfcUnsupportedEncoding">Nieobsługiwane kodowanie:</string>
|
||||
<string name="nfcNoNdefIntentBut"> Brak intencji NFC NDEF, ale</string>
|
||||
<string name="nfcNotSupportedInThisAndroidVersionYet">NFC nie jest jeszcze obsługiwane w tej wersji Androida.</string>
|
||||
<string name="cantRunRule">Nie można uruchomić reguł.</string>
|
||||
<string name="cantDownloadTooFewRequestsInSettings" translatable="false">Can\'t download anything. Amount of http requests in settings is lower than 1.</string>
|
||||
<string name="nfcApplyTagToRule">Zastosuj tag do reguły</string>
|
||||
<string name="nfcTagReadSuccessfully">Tag odczytany pomyślnie.</string>
|
||||
<string name="nfcValueNotSuitable">Zapisana wartość nie jest odpowiednia.</string>
|
||||
<string name="nfcNoTag">Brak tagu.</string>
|
||||
<string name="newNfcId">Wpisz nowy identyfikator NFC</string>
|
||||
<string name="useExistingTag">Użyj istniejącego tagu NFC</string>
|
||||
<string name="newId">Nowy ID:</string>
|
||||
<string name="currentId">Obecny ID:</string>
|
||||
<string name="nfcTagDataNotUsable">Dane tagu nie nadają się do użytku, napisz od nowa.</string>
|
||||
<string name="nfcBringTagIntoRangeToRead">Umieść znacznik w zasięgu do odczytania.</string>
|
||||
<string name="toggleRule">Przełącz regułę</string>
|
||||
<string name="toggling">Przełączanie</string>
|
||||
<string name="toggle">przełącznik</string>
|
||||
<string name="overlapBetweenPois">Wykryto nakładanie się do lokalizacji %1$s z %2$s metrów. Zmniejsz promień przynajmniej o tyle.</string>
|
||||
<string name="noOverLap" translatable="false">No overlap to other locations detected.</string>
|
||||
<string name="ruleToggable" translatable="false">Rule %1$s is toggable.</string>
|
||||
<string name="ruleNotToggable" translatable="false">Rule %1$s is not suitable for toggling.</string>
|
||||
<string name="none">nic</string>
|
||||
<string name="anyLocation">dowolna lokalizacjan</string>
|
||||
<string name="invalidPoiName">Błędna nazwadla lokalizacji.</string>
|
||||
<string name="eraseSettings">Usuń ustawienia</string>
|
||||
<string name="defaultSettings">Domyślne ustawienia</string>
|
||||
<string name="areYouSure">Jesteś pewny?</string>
|
||||
<string name="poiCouldBeInRange" translatable="false">At least location %1$s could be in range, if not others in addition.</string>
|
||||
<string name="noPoiInRelevantRange" translatable="false">No location in relevant range.</string>
|
||||
<string name="activityDetection">Wykrywanie aktywności</string>
|
||||
<string name="android.permission.ACTIVITY_RECOGNITION">Wykrywanie aktywności</string>
|
||||
<string name="detectedActivity">Wykryta aktywność:</string>
|
||||
<string name="detectedActivityInVehicle">W pojeździe (samochód/autobus)</string>
|
||||
<string name="detectedActivityOnBicycle">Na rowerze</string>
|
||||
<string name="detectedActivityOnFoot">Z buta</string>
|
||||
<string name="detectedActivityStill">Ndal</string>
|
||||
<string name="detectedActivityUnknown">niezanane</string>
|
||||
<string name="detectedActivityTilting">Pochylanie</string>
|
||||
<string name="detectedActivityWalking">Spacer</string>
|
||||
<string name="detectedActivityRunning">Bieganie</string>
|
||||
<string name="detectedActivityInvalidStatus">Nieprawidłowa aktywność</string>
|
||||
<string name="ruleDoesntApplyActivityGivenButTooLowProbability" translatable="false">Rule %1$s doesn\'t apply. Detected activity %2$s given, but too low probability (%3$s %%), required %4$s %%.</string>
|
||||
<string name="ruleDoesntApplyActivityNotPresent" translatable="false">Rule %1$s doesn\'t apply. Required activity %2$s not present.</string>
|
||||
<string name="selectTypeOfActivity">Wybierz rodzaj aktywności</string>
|
||||
<string name="triggerOnlyAvailableIfPlayServicesInstalled">Ten wyzwalacz jest dostępny tylko wtedy, gdy są zainstalowane Usługi Google Play.</string>
|
||||
<string name="activityDetectionFrequencyTitle">Częstotliwość wykrywania aktywności [sec]</string>
|
||||
<string name="activityDetectionFrequencySummary">Sekundy między próbami wykrycia aktywności.</string>
|
||||
<string name="activityDetectionRequiredProbabilityTitle">Prawdopodobieństwo wykrycia aktywności</string>
|
||||
<string name="activityDetectionRequiredProbabilitySummary">Pewność, z której czynności są akceptowane jako fakt.</string>
|
||||
<string name="incomingCallFrom">Przychodzące połączenie telefoniczne od %1$s.</string>
|
||||
<string name="outgoingCallTo">Wychodzące połączenie telefoniczne do %1$s.</string>
|
||||
<string name="actionSpeakText">Mówienie tekstu</string>
|
||||
<string name="textToSpeak">Tekst do mówienia</string>
|
||||
<string name="toggleNotAllowed">Przełączanie jest obecnie dozwolone tylko w przypadku reguł, których wyzwalaczem są tagi NFC. Więcej informacji można znaleźć w pomocy.</string>
|
||||
<string name="errorReadingPoisAndRulesFromFile">Błąd odczytu lokalizacji i reguł z pliku.</string>
|
||||
<string name="noDataChangedReadingAnyway">Wygląda na to, że nie zapisano żadnych zmian danych. Mogły jednak wystąpić zmiany w pamięci, które należy cofnąć. Ponowne czytanie pliku.</string>
|
||||
<string name="bluetoothConnection">Połączenie Bluetooth</string>
|
||||
<string name="bluetoothConnectionTo">Połączenie Bluetooth do %1$s</string>
|
||||
<string name="bluetoothDisconnectFrom">Połączenie Bluetooth z %1$s utracone</string>
|
||||
<string name="bluetoothDeviceInRange">Bluetooth device %1$s in range.</string>
|
||||
<string name="bluetoothDeviceOutOfRange">Urządzenie Bluetooth %1$s w zasięgu.</string>
|
||||
<string name="anyDevice">dowolne urządzenie</string>
|
||||
<string name="ruleDoesntApplyNotTheCorrectDeviceName" translatable="false">Rule %1$s doesn\'t apply. Not the correct bluetooth device name.</string>
|
||||
<string name="ruleDoesntApplyNotTheCorrectDeviceAddress" translatable="false">Rule %1$s doesn\'t apply. Not the correct bluetooth device address.</string>
|
||||
<string name="noDevice">bez urządzenia</string>
|
||||
<string name="selectDeviceFromList">jedne z listy</string>
|
||||
<string name="connectionToDevice">połączenie z urządzeniem</string>
|
||||
<string name="disconnectionFromDevice">rozłączenie z urządzeniem</string>
|
||||
<string name="deviceInRange">urządzenie w zasięgu</string>
|
||||
<string name="deviceOutOfRange">urządzenie poza zasięgiem</string>
|
||||
<string name="selectDeviceOption">Wybierz opcję urządzenia.</string>
|
||||
<string name="selectConnectionOption">Wybierz opcję połączenia.</string>
|
||||
<string name="ruleDoesntApplyDeviceInRangeButShouldNotBe" translatable="false">Rule %1$s doesn\'t apply. Device is in range, but should not be.</string>
|
||||
<string name="ruleDoesntApplyStateNotCorrect" translatable="false">Rule %1$s doesn\'t apply. Wrong state.</string>
|
||||
<string name="triggerHeadsetPlugged">Połączenie zestawu słuchawkowego</string>
|
||||
<string name="actionPlayMusic">Otwórz odtwarzacz muzyki</string>
|
||||
<string name="headsetConnected">Zestaw słuchawkowy (typ: %1$s) podłączony</string>
|
||||
<string name="headsetDisconnected">Zestaw słuchawkowy (typ: %1$s) rozłączony</string>
|
||||
<string name="headphoneSimple">Słuchawki</string>
|
||||
<string name="headphoneMicrophone">Mikrofon</string>
|
||||
<string name="headphoneAny">Albo</string>
|
||||
<string name="headphoneSelectType">Wybierz typ słuchawek</string>
|
||||
<string name="ruleDoesntApplyWrongHeadphoneType" translatable="false">Rule %1$s doesn\'t apply. Wrong headphone type.</string>
|
||||
<string name="ignoringActivityDetectionUpdateTooSoon" translatable="false">Ignoring activity detection update. Came in sooner that %1$s seconds.</string>
|
||||
<string name="whatsThis">Co to jest?</string>
|
||||
<string name="atLeastRuleXisUsingY" translatable="false">At least rule \"%1$s\" is using a trigger of type \"%2$s\".</string>
|
||||
<string name="privacyLocationingTitle">Tylko lokalizacja prywatna</string>
|
||||
<string name="privacyLocationingSummary">Unikaj metod lokalizacji, które mogą wysyłać Twoją lokalizację do dostawcy, np. Google. Spowoduje to użycie tylko GPS i dlatego może być powolne lub nie działać niezawodnie.</string>
|
||||
<string name="enforcingGps" translatable="false">Private Locationing enabled, enforcing GPS use.</string>
|
||||
<string name="notEnforcingGps" translatable="false">Private Locationing not enabled, using regular provider search.</string>
|
||||
<string name="gpsMeasurement" translatable="false">GPS measurement</string>
|
||||
<string name="gpsMeasurementTimeout" translatable="false">GPS measurement stopped due to timeout.</string>
|
||||
<string name="cellMastChanged" translatable="false">Cell tower changed: %1$s</string>
|
||||
<string name="noiseDetectionHint">Jeśli uważasz, że wykrywanie hałasu nie działa poprawnie (w zależności od podanej wartości), pamiętaj, że każdy telefon jest inny. Dlatego możesz zmienić \"Odniesienie do pomiaru hałasu\" w ustawieniach. Zobacz http://en.wikipedia.org/wiki/Decibel, aby uzyskać więcej informacji. Do kalibracji urządzenia można użyć kalibratora głośności z ekranu głównego.</string>
|
||||
<string name="hint">Wskazówka</string>
|
||||
<string name="selectNoiseLevel">Wybierz poziom hałasu</string>
|
||||
<string name="poiHasWifiStoppingCellLocationListener" translatable="false">Location has wifi. Stopping CellLocationChangedReceiver.</string>
|
||||
<string name="poiHasNoWifiNotStoppingCellLocationListener" translatable="false">Location doesn\'t have wifi. Not stopping CellLocationChangedReceiver.</string>
|
||||
<string name="showOnMap">Pokaż na mapie</string>
|
||||
<string name="noMapsApplicationFound">Nie znaleziono aplikacji map na Twoim urządzeniu.</string>
|
||||
<string name="locationEngineNotActive">Sensor lokalizacji nie jest aktywny.</string>
|
||||
<string name="addProfile">Dodaj profil</string>
|
||||
<string name="profile">Profil</string>
|
||||
<string name="soundMode">Tryb dźwięku</string>
|
||||
<string name="volumes">Głośność</string>
|
||||
<string name="incomingCallsRingtone">Ton dla połączeń przychodzących</string>
|
||||
<string name="notificationRingtone">Ton dla powiadomień</string>
|
||||
<string name="hapticFeedback">Haptyczne sprzężenie zwrotne (wibracje podczas dotykania ekranu)</string>
|
||||
<string name="volumeMusicVideoGameMedia">Muzyka, wideo, gry i inne media</string>
|
||||
<string name="volumeRingtoneNotifications">Dzwonek i powiadomienia</string>
|
||||
<string name="volumeAlarms">Alarmy</string>
|
||||
<string name="change">Zmiana</string>
|
||||
<string name="audibleSelection">Wybór dźwiękowy (dźwięk podczas wybierania ekranu)</string>
|
||||
<string name="screenLockUnlockSound">Dźwięk blokady ekranu/odblokowania</string>
|
||||
<string name="vibrateWhenRinging">Wibracje podczas dzwonienia</string>
|
||||
<string name="profiles">Profile</string>
|
||||
<string name="soundModeNormal">Normaly</string>
|
||||
<string name="soundModeVibrate">Wibracje</string>
|
||||
<string name="soundModeSilent">Cichy</string>
|
||||
<string name="enterAname">Wpisz nazwę.</string>
|
||||
<string name="noChangeSelectedProfileDoesntMakeSense">Nie wybrano zmiany. Profil nie ma sensu.</string>
|
||||
<string name="noProfilesCreateOneFirst">Brak profili w Twojej konfiguracji. Najpierw utwórz jeden.</string>
|
||||
<string name="errorActivatingProfile">Błąd aktywacji profilu:</string>
|
||||
<string name="anotherProfileByThatName">Istnieje już inny profil o tej nazwie.</string>
|
||||
<string name="invalidProfileName">Nieprawidłowa nazwa profilu.</string>
|
||||
<string name="errorWritingFile">Błąd podczas zapisywania pliku ustawień.</string>
|
||||
<string name="unknownError">Nieznany błąd.</string>
|
||||
<string name="noWritableFolderFound">Nie znaleziono folderu z możliwością zapisu do przechowywania pliku konfiguracyjnego.</string>
|
||||
<string name="usbTetheringFailForAboveGingerbread">To najprawdopodobniej nie zadziała, ponieważ korzystasz z Androida powyżej 2.3. Zamiast tego możesz użyć tetheringu przez Wi-Fi.</string>
|
||||
<string name="usingNewThreadForRuleExecution">Używanie nowego wątku do aktywacji reguły.</string>
|
||||
<string name="startNewThreadForRuleExecution">Rozpocznij nowy wątek w celu aktywacji reguły.</string>
|
||||
<string name="newThreadRules">Nowy wątek</string>
|
||||
<string name="showIcon">Pokaż ikonę</string>
|
||||
<string name="showIconWhenServiceIsRunning">Pokaż ikonę, gdy usługa jest uruchomiona (ukrywanie działa tylko pod Androidem 7). Jeśli korzystasz z wyższej wersji, przejdź do ustawień systemu, następnie Automatyzacja, następnie powiadomienia i wyłącz \"Powiadomienie o usłudze\".</string>
|
||||
<string name="ruleHistory">Historia reguł (od najnowszych):</string>
|
||||
<string name="someOptionsNotAvailableYet">Niektóre opcje są wyłączone, ponieważ nie można ich jeszcze używać. Zostaną one wprowadzone w późniejszej wersji programu.</string>
|
||||
<string name="lockSoundChanges">Zmiana dźwięku blokady</string>
|
||||
<string name="noProfileChangeSoundLocked">Profil nie zostanie aktywowany. Ostatnio aktywowany profil został zablokowany.</string>
|
||||
<string name="currentVolume">Obecna głośność</string>
|
||||
<string name="enterValidReferenceValue">Wprowadź prawidłową wartość referencyjną.</string>
|
||||
<string name="volumeTest">Kalibracja głośności</string>
|
||||
<string name="volumeCalibrationExplanation">TAby obliczyć wartość dB dla monitorowania hałasu, należy określić tak zwaną fizyczną wartość odniesienia. Proszę przeczytać Wikipedię, aby uzyskać więcej informacji. Ta wartość jest najprawdopodobniej inna dla każdego telefonu. Przeciągnij pasek wyszukiwania, aby zmienić zdefiniowaną fizyczną wartość odniesienia. Im wyższa wartość odniesienia, tym niższa będzie wartość dB. Stałe pomiary będą wykonywane co %1$s sekund, a wyniki zostaną wyświetlone poniżej. Naciśnij wstecz, gdy znajdziesz odpowiednią wartość.</string>
|
||||
<string name="settingsWillTakeTime">Niektóre ustawienia nie zostaną zastosowane przed zmianą niektórych ustawień środowiska lub ponownym uruchomieniem usługi.</string>
|
||||
<string name="phoneIsRooted" translatable="false">Phone is rooted.</string>
|
||||
<string name="phoneIsNotRooted" translatable="false">Phone is not rooted.</string>
|
||||
<string name="dataConWithRootSuccess" translatable="false">Data connection was successfully changed using superuser permissions.</string>
|
||||
<string name="dataConWithRootFail" translatable="false">Data could not be changed using superuser permissions.</string>
|
||||
<string name="rootExplanation">Aby ta funkcja działała, musisz zrootować telefon. Następnie musisz \"uruchomić regułę ręcznie\", aby wyświetlić pytanie o uprawnienia administratora. Gdy pojawią się wyskakujące okienka administratora, zawsze musisz zezwolić aplikacji na zrobienie tego. W przeciwnym razie reguła nie może działać, gdy telefon jest bez nadzoru.</string>
|
||||
<string name="errorWritingConfig">Błąd podczas zapisywania konfiguracji. Czy masz zapisywalną pamięć?</string>
|
||||
<string name="phoneNrReplacementError">Nie mogłem wstawić ostatniego numeru telefonu do zmiennej. nie mam go.</string>
|
||||
<string name="username">Nazwa</string>
|
||||
<string name="password">Hasło</string>
|
||||
<string name="useAuthentication">Użyj uwierzytelniania</string>
|
||||
<string name="permissionsTitle">Wymagane uprawnienia</string>
|
||||
<string name="permissionsExplanation">Wyjaśnienie wymaganych uprawnień</string>
|
||||
<string name="ok">Ok</string>
|
||||
<string name="disabledFeatures">Wyłączone funkcje</string>
|
||||
<string name="theFollowingPermissionsHaveBeenDenied">Następujące uprawnienia zostały odrzucone:</string>
|
||||
<string name="permissionsExplanationGeneric">Aplikacja działa obecnie w trybie ograniczonym i dezaktywowała niektóre funkcje. Aby w pełni funkcjonować, wymaga uprawnień. Jeśli chcesz korzystać ze wszystkich funkcji, musisz przyznać uprawnienia w następujących oknach dialogowych uprawnień. Jeśli tego nie zrobisz, niektóre zasady nie mogą zostać wykonane. Poniżej znajduje się wyjaśnienie żądanych uprawnień. Kliknij „kontynuuj”, gdy będziesz gotowy, aby kontynuować.</string>
|
||||
<string name="permissionsExplanationSmall">Aby włączyć funkcję, której właśnie próbowałeś użyć, wymagane są dodatkowe uprawnienia. Kliknij przycisk Kontynuuj, aby o nie poprosić.</string>
|
||||
<string name="continueText">kontynuuj</string>
|
||||
<string name="rule">Reguła</string>
|
||||
<string name="storeSettings">Odczytywanie i zapisywanie ustawień</string>
|
||||
<string name="featuresDisabled">OSTRZEŻENIE: Funkcje są wyłączone, automatyzacja działa w trybie ograniczonym. Kliknij tutaj po więcej informacji.</string>
|
||||
<string name="ruleLegend">Zielony = włączony, czerwony = wyłączony, żółty = za mało uprawnień</string>
|
||||
<string name="systemSettingsNote1">Wymagana jest zgoda na zmianę niektórych ustawień systemu operacyjnego (nawet prostych rzeczy, takich jak włączenie Bluetooth lub Wi-Fi). Po kliknięciu „kontynuuj” pojawi się okno, w którym musisz włączyć tę opcję dla automatyzacji. Następnie naciśnij klawisz „wstecz”.</string>
|
||||
<string name="systemSettingsNote2">Później w drugim oknie dialogowym pojawi się prośba o dalsze uprawnienia.</string>
|
||||
<string name="appRequiresPermissiontoAccessExternalStorage">Automatyzacja wymaga dostępu do pamięci zewnętrznej w celu odczytania jej ustawień i reguł.</string>
|
||||
<string name="mainScreenPermissionNote">Automatyzacja wymaga więcej uprawnień do pełnego działania. Kliknij ten tekst, aby dowiedzieć się więcej i poprosić o nie.</string>
|
||||
<string name="invalidDevice">Nieprawidłowe urządzenie</string>
|
||||
<string name="google_app_id" translatable="false">your app id</string>
|
||||
<string name="logFileMaxSizeSummary">Maksymalny rozmiar pliku dziennika w megabajtach. Zostanie obrócony, jeśli będzie większy.</string>
|
||||
<string name="logFileMaxSizeTitle">Maksymalny rozmiar pliku dziennika [Mb]</string>
|
||||
<string name="android.permission.READ_CALL_LOG">Przeczytaj dziennik telefonu</string>
|
||||
<string name="android.permission.READ_CALENDAR">Przeczytaj wpisy w kalendarzu</string>
|
||||
<string name="android.permission.ACCESS_FINE_LOCATION">Przeczytaj dokładną lokalizację</string>
|
||||
<string name="android.permission.ACCESS_COARSE_LOCATION">Przeczytaj zgrubną lokalizację</string>
|
||||
<string name="readLocation">Przeczytaj lokalizację</string>
|
||||
<string name="android.permission.INTERNET">Wysyłaj dane przez połączenie sieciowe</string>
|
||||
<string name="android.permission.ACCESS_NETWORK_STATE">Odczytaj stan sieci urządzenia</string>
|
||||
<string name="android.permission.ACCESS_WIFI_STATE">Przeczytaj stan Wi-Fi urządzenia</string>
|
||||
<string name="android.permission.BLUETOOTH">Zmień ustawienia Bluetootha</string>
|
||||
<string name="android.permission.BLUETOOTH_ADMIN">Zmień ustawienia Bluetootha</string>
|
||||
<string name="android.permission.NFC">Użyj modułu NFC</string>
|
||||
<string name="android.permission.VIBRATE">Niech telefon wibruje</string>
|
||||
<string name="android.permission.WAKE_LOCK">Nie wyłączaj telefonu</string>
|
||||
<string name="android.permission.MODIFY_AUDIO_SETTINGS">Zmień ustawienia dźwięku</string>
|
||||
<string name="android.permission.RECORD_AUDIO">Nagraj dźwięk</string>
|
||||
<string name="android.permission.PROCESS_OUTGOING_CALLS">Wykrywaj połączenia wychodzące</string>
|
||||
<string name="android.permission.MODIFY_PHONE_STATE">Zmień ustawienia urządzenia</string>
|
||||
<string name="android.permission.READ_PHONE_STATE">Wykryj stan telefonu</string>
|
||||
<string name="android.permission.READ_EXTERNAL_STORAGE">Odczyt pamięci</string>
|
||||
<string name="android.permission.WRITE_EXTERNAL_STORAGE">Pamięć zapisu</string>
|
||||
<string name="android.permission.GET_TASKS">Wykrywaj uruchomione procesy</string>
|
||||
<string name="android.permission.WRITE_SETTINGS">Zmień ustawienia urządzenia</string>
|
||||
<string name="android.permission.RECEIVE_BOOT_COMPLETED">Wykryj ponowne uruchomienie urządzenia</string>
|
||||
<string name="android.permission.WRITE_SECURE_SETTINGS">Zmień ustawienia urządzenia</string>
|
||||
<string name="android.permission.BATTERY_STATS">Odczytaj stan baterii</string>
|
||||
<string name="android.permission.CHANGE_BACKGROUND_DATA_SETTING">Zmień połączenie transmisji danych</string>
|
||||
<string name="android.permission.SEND_SMS">Wyśli wiadomości tekstowe</string>
|
||||
<string name="android.permission.READ_CONTACTS">Odczytaj dane kontaktowe</string>
|
||||
<string name="android.permission.ACCESS_NOTIFICATION_POLICY">Zastąp zasady nie przeszkadzać</string>
|
||||
<string name="theseAreThePermissionsRequired">To są wymagane uprawnienia:</string>
|
||||
<string name="ruleXrequiresThis">Wymaga tego reguła \"%1$s\".</string>
|
||||
<string name="profileXrequiresThis">Profil \"%1$s\" tego wymaga.</string>
|
||||
<string name="helpTextActivityDetection">Ta funkcja może wykrywać, czy aktualnie jesteś w ruchu i czy poruszasz się pieszo lub jakim typem pojazdu (do pewnego stopnia). Ta funkcja nie jest w pełni wbudowana w Automation, ale jest dostarczana przez Usługi Google Play. Technicznie rzecz biorąc, nie daje wyniku tak/nie, ale zwraca procent, do którego poziomu jest pewna, że wykryła twój status. Możesz ustawić wartość procentową, od której Automation zaakceptuje wynik. Dwie uwagi: 1) W tym samym czasie może wystąpić więcej niż 1 stan. Na przykład możesz CHODZIĆ wewnątrz jadącego autobusu. 2) Ten czujnik jest stosunkowo prądożerny. Jeśli to możliwe, możesz rozważyć użycie alternatyw, np. wymagają podłączenia samochodowego zestawu głośnomówiącego, aby wykryć, że prowadzisz.</string>
|
||||
<string name="sendTextMessage">Wyślij wiadomość tekstową</string>
|
||||
<string name="textToSend">Tekst do wysłania</string>
|
||||
<string name="textMessageAnnotations">Możesz bezpośrednio wprowadzić numer telefonu. Alternatywnie użyj opcji kontaktów, aby wybrać jeden. Ale pamiętaj: tutaj zostanie zapisany numer, a nie kontakt. Jeśli zmienisz numer telefonu wybranego kontaktu, musisz zaktualizować tę regułę. Sama tego nie robi.</string>
|
||||
<string name="importNumberFromContacts">Importuj numer z kontaktów</string>
|
||||
<string name="android9RecordAudioNotice">Jeśli używasz wyzwalacza poziomu hałasu: Niestety, począwszy od Androida 9 (Pie), Google postanowił uniemożliwić aplikacjom działającym w tle korzystanie z mikrofonu. Więc ten wyzwalacz nie ma już żadnego efektu i niczego nie uruchomi.</string>
|
||||
<string name="android10WifiToggleNotice">Niestety Google zdecydowało się usunąć tę funkcję w Androidzie 10. Zwykłe aplikacje nie mogą już włączać ani wyłączać Wi-Fi. Tylko jeśli twoje urządzenie jest zrootowane, powinno to nadal działać. Jeśli nie, chyba nic już z tym nie zrobimy</string>
|
||||
<string name="messageNotShownAgain">Ta wiadomość nie zostanie ponownie wyświetlona.</string>
|
||||
<string name="chooseActivityHint">W tym wyskakującym okienku ostatecznego wyboru musisz wybrać określoną czynność. Uproszczone jest to jak okno żądanej aplikacji. Jeśli nie wiesz, który z nich to generalnie dobry pomysł, wybierz taki który ma w nazwie \"main\" lub \"launcher\".</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="clickAndHoldForOptions">Kliknij i przytrzymaj element, aby wyświetlić opcje.</string>
|
||||
<string name="ruleActivationComplete" translatable="false">Rule \"%1$s\" finished.</string>
|
||||
<string name="positioningEngine">Silnik pozycjonowania</string>
|
||||
<string name="googleSarcasm">Dzięki nieskończonej mądrości Google i nieustannemu dążeniu do ochrony prywatności wszystkich użytkowników, wszystkie reguły, które mogą służyć do wysyłania smsów lub odczytywania stanu telefonu, zostały pozbawione wszystkich wyzwalaczy i działań, które Google uważa za ryzykowne.</string>
|
||||
<string name="startAutomationAsService">Uruchom automatyzację jako usługę</string>
|
||||
<string name="setScreenBrightness">Ustaw jasność ekranu</string>
|
||||
<string name="setScreenBrightnessEnterValue">Wprowadź żądaną jasność (od 0 do 100).</string>
|
||||
<string name="autoBrightness">Włącz automatyczną jasność</string>
|
||||
<string name="apply">akceptuj</string>
|
||||
<string name="brightnessAuto">automatyczna jasność</string>
|
||||
<string name="brightnessManual">manualna jasność</string>
|
||||
<string name="autoBrightnessNotice">Jeśli użyjesz automatycznej jasności, wartość jasności, której użyjesz poniżej, prawdopodobnie nie będzie długo używana.</string>
|
||||
<string name="screenLockSoundNotice">Dźwięków blokady ekranu nie można już automatycznie zmieniać na urządzeniach z systemem Android w wersji 6.0 lub nowszej. Cokolwiek tu ustawisz, nie zadziała w żadną stronę.</string>
|
||||
<string name="startScreen">Ekran startowy</string>
|
||||
<string name="startScreenSummary">Wybierz ekran, na którym aplikacje otwierają się przy starcie.</string>
|
||||
<string name="executeRulesAndProfilesWithSingleClickTitle">Uruchom reguły/profile jednym kliknięciem.</string>
|
||||
<string name="googleLocationChicanery">Ta aplikacja zbiera dane o lokalizacji, aby włączyć reguły oparte na lokalizacji i wykrywaniu prędkości, nawet gdy aplikacja jest zamknięta lub nie jest używana.</string>
|
||||
<string name="googleLocationChicaneryOld">Ta aplikacja zbiera dane o lokalizacji, aby określić, czy aktualnie znajdujesz się w jednej z utworzonych przez siebie lokalizacji. Ponadto służy do określenia aktualnej prędkości, jeśli używasz tego wyzwalacza w regułach. Dzieje się tak nawet wtedy, gdy aplikacja jest zamknięta lub nie jest używana (ale tylko wtedy, gdy usługa jest aktywna).</string>
|
||||
<string name="android.permission.ACCESS_BACKGROUND_LOCATION">Odczytaj lokalizację w tle.</string>
|
||||
<string name="deviceDoesNotHaveBluetooth">Wygląda na to, że to urządzenie nie ma Bluetootha. Nadal możesz kontynuować konfigurowanie tego, ale najprawdopodobniej nie będzie to działało.</string>
|
||||
<string name="manageLocations">Twórz lub edytuj lokalizacje</string>
|
||||
<string name="error">Błąd</string>
|
||||
<string name="featureNotInFdroidVersion">Ta funkcja jest oparta na niewolnym oprogramowaniu. Dlatego nie jest dostępna w wersji F-Droid.</string>
|
||||
<string name="settingsReferringToRestrictedFeaturesInFdroid">Twoje ustawienia i/lub reguły odnoszą się obecnie do niewolnych funkcji, których nie można zapewnić w wersji F-Droid. Obejmuje to wykrywanie bieżącej aktywności fizycznej.</string>
|
||||
<string name="settingsReferringToRestrictedFeaturesInGoogle">Twoje ustawienia i/lub reguły odnoszą się obecnie do funkcji, których nie można zapewnić w wersji Google Play. Między innymi obejmuje wszystko, co dotyczy połączeń telefonicznych i wiadomości tekstowych.</string>
|
||||
<string name="publishedOn">opublikowane w dniu</string>
|
||||
<string name="displayNewsOnMainScreen">Wyświetlanie wiadomości o aplikacji na ekranie głównym</string>
|
||||
<string name="displayNewsOnMainScreenDescription">Ogłoszenia tylko o tej aplikacji, prawdopodobnie mówimy o 1-2 rocznie, nie więcej.</string>
|
||||
<string name="filesHaveBeenMovedTo">Automation używa teraz innej ścieżki do przechowywania plików. Wszystkie Twoje pliki Automation zostały przeniesione tutaj: \"%s\". Pozwolenie na przechowywanie zewnętrzne nie jest już wymagane; możesz to odwołać. Zostanie usunięte w przyszłej wersji.</string>
|
||||
<string name="locationDisabled">Lokalizacja wyłączona</string>
|
||||
<string name="locationEngineDisabledShort">Nie można już określić lokalizacji w tle. Kliknij tutaj, aby dowiedzieć się dlaczego.</string>
|
||||
<string name="locationEngineDisabledLong">Niestety nie można już określić Twojej lokalizacji. Mamy dług wdzięczności wobec Google za jego nieskończoną mądrość i uprzejmość.\\n\\nPozwól, że wyjaśnię to dokładniej. Począwszy od Androida 10 wprowadzono nowe uprawnienie, które jest potrzebne do określenia Twojej lokalizacji w tle (co oczywiście jest wymagane w przypadku takiej aplikacji). Chociaż ogólnie uważam, że to dobry pomysł, to szykanowanie, jakie wiąże się z tym dla programistów, nie jest.\\n\\nTworząc aplikację, możesz spróbować zakwalifikować się do tego pozwolenia, przestrzegając katalogu wymagań. Niestety nowe wersje mojej aplikacji były odrzucane przez okres trzech miesięcy. Spełniłem wszystkie te wymagania, gówniane wsparcie programistyczne Google twierdziło, że nie. Po przedstawieniu im dowodu, że jednak to zrobiłem - otrzymałem odpowiedź w stylu \"Nie mogę ci już pomóc\". W końcu się poddałem. \\n\\nW rezultacie wersja Google Play NIE może już używać Twojej lokalizacji jako wyzwalacza. Moją jedyną alternatywną opcją byłoby całkowite usunięcie tej aplikacji ze sklepu.\\n\\nBardzo mi przykro z tego powodu, ale starałem się jak mogłem kłócąc się z \"wsparciem\", które wielokrotnie kończyło się niepowodzeniem aby zdać test Turinga.\\n\\nDobra wiadomość: nadal możesz mieć to wszystko!\\n\\nAutomation jest teraz open source i można go znaleźć w F-Droid. To jest sklep z aplikacjami, który naprawdę dba o twoją prywatność - zamiast po prostu tak się zachowywać. Po prostu wykonaj kopię zapasową pliku konfiguracyjnego, odinstaluj tę aplikację, zainstaluj ją ponownie z F-Droid, przywróć plik konfiguracyjny - gotowe.\\n\\nKliknij tutaj, aby dowiedzieć się więcej:</string>
|
||||
<string name="filesStoredAt">Pliki konfiguracji i dziennika są przechowywane w folderze %1$s. Kliknij ten tekst, aby otworzyć eksplorator plików. Niestety będzie to działać tylko na zrootowanym urządzeniu. DLA WSZYSTKICH INNYCH URZĄDZEŃ: Po prostu użyj przycisku eksportu, aby wykonać kopię zapasową.</string>
|
||||
<string name="notification">Powiadomienie</string>
|
||||
<string name="title">Tytuł</string>
|
||||
<string name="text">Tekst</string>
|
||||
<string name="directionStringEquals">równa się</string>
|
||||
<string name="directionStringContains">zawiera</string>
|
||||
<string name="directionStringStartsWith">zacznij z</string>
|
||||
<string name="directionStringEndsWith">skończ z</string>
|
||||
<string name="directionStringNotEquals">nie równa się</string>
|
||||
<string name="anyApp">dowolna app</string>
|
||||
<string name="notificationTriggerExplanation">Ten wyzwalacz będzie reagował na powiadomienia o otwieraniu innych aplikacji w obszarze powiadomień (lub ich zamykaniu). Możesz określić inną aplikację, z której ma pochodzić powiadomienie. Jeśli tego nie zrobisz, powiadomienia z dowolnej innej aplikacji będą się liczyć. Możesz także określić ciągi, które muszą lub nie mogą znajdować się w ich tytule lub treści powiadomienia. Porównanie odbywa się bez uwzględniania wielkości liter.</string>
|
||||
<string name="postsNotification">%1$s powiadomień o postach</string>
|
||||
<string name="removedNotification">powiadomienie od %1$s zostało usunięte</string>
|
||||
<string name="notificationAppears">Pojawi się powiadomienie</string>
|
||||
<string name="notificationDisappears">Powiadomienie znika</string>
|
||||
<string name="direction">Kierunek</string>
|
||||
<string name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">Czytaj powiadomienia systemowe</string>
|
||||
<string name="playSound">Odtwórz dźwięk</string>
|
||||
<string name="alwaysPlay">zawsze odtwórz</string>
|
||||
<string name="alwaysPlayExplanation">Jeśli to ustawienie jest aktywne, dźwięk będzie zawsze odtwarzany. Jeśli jest dezaktywowany, będzie odtwarzany tylko wtedy, gdy telefon nie jest wyciszony ani wibruje. Jednak jeśli jest aktywny, nie będzie miał wpływu na głośność. Więc jeśli twój telefon jest w trybie dzwonka, na przykład nie zwiększy głośności multimediów. Więc jeśli głośność multimediów jest wyciszona, też nic nie usłyszysz.</string>
|
||||
<string name="selectSoundFile">Wybierz plik dźwiękowy</string>
|
||||
<string name="fileDoesNotExist">Plik nie istnieje.</string>
|
||||
<string name="noFileManageInstalled">Brak zainstalowanego menedżera plików.</string>
|
||||
<string name="shareConfigAndLogFilesWithDev">Dołącz pliki konfiguracyjne i dzienniki.</string>
|
||||
<string name="shareConfigAndLogExplanation">Spowoduje to rozpoczęcie nowej wiadomości e-mail z plikami konfiguracji i dziennikem załączonymi jako plik zip. Nie zostanie wysłany automatycznie, nadal musisz nacisnąć \"wyślij\". Możesz też zmienić odbiorcę na np. siebie.</string>
|
||||
<string name="startAppChoiceNote">Tutaj masz 2 ogólne opcje:\n\n1. Program można uruchomić, wybierając czynność. Wyobraź sobie, że jest to preselekcja określonego ekranu/okna aplikacji. Pamiętaj, że to nie zawsze może działać. Dzieje się tak, ponieważ okna aplikacji mogą wchodzić ze sobą w interakcje, np. przekazać parametry. Gdy bez ogródek uruchamia się określony ekran, ta interakcja nie nastąpiła, a okno może się natychmiast zamknąć (dlatego tak naprawdę nigdy nie jest pokazane). Mimo to spróbuj! Ścieżkę aktywności można wprowadzić ręcznie, ale zaleca się użycie przycisku „Wybierz”. Jeśli zdecydujesz się wprowadzić go ręcznie, w górnym polu wpisz nazwę pakietu aplikacji, a w dolnym pełną ścieżkę działania.\n\n2. Wybór za pomocą akcji w przeciwieństwie do wybierania określonego okna, możesz także uruchomić program za pomocą akcji. To tak, jakby wykrzyczeć „Chciałbym xyz” i jeśli jest zainstalowana aplikacja, która może ci w tym pomóc, zostanie uruchomiona. Dobrym przykładem może być uruchomienie przeglądarki - możesz nawet mieć kilka zainstalowanych (zwykle jedena jest domyślna). Musisz wprowadzić to ręcznie, nazwa_pakietu jest tutaj opcjonalna. Pamiętaj, że żadne zmienne nie zostaną rozwiązane. Jeśli chcesz uruchomić kamerę, na przykład za pomocą \"MediaStore.ACTION_IMAGE_CAPTURE\" nie będzie działać. Musisz zajrzeć do dokumentacji Androida i zamiast tego użyć rzeczywistej wartości tej zmiennej, która w tym przykładzie byłaby \"android.media.action.IMAGE_CAPTURE\".</string>
|
||||
<string name="errorRunningRule">Podczas uruchamiania reguły wystąpił błąd.</string>
|
||||
<string name="cantFindSoundFile">Nie można znaleźć pliku dźwiękowego %1$s i dlatego nie można go odtworzyć.</string>
|
||||
<string name="addParameters">Dodaj parametry</string>
|
||||
<string name="com.wireguard.android.permission.CONTROL_TUNNELS">Tunele kontrolne aplikacji Wireguard</string>
|
||||
<string name="startAppSelectionType">Metoda\nwyboru aplikacji</string>
|
||||
<string name="startAppByActivity">według aktywności</string>
|
||||
<string name="startAppByAction">według działania</string>
|
||||
<string name="enterValidAction">Wprowadź prawidłowe działanie</string>
|
||||
<string name="enterPackageName">Wprowadź prawidłową nazwę pakietu.</string>
|
||||
<string name="state">Państwo</string>
|
||||
<string name="phoneNumberExplanation">Możesz wprowadzić konkretny zdalny numer telefonu, ale nie musisz. Jeśli chcesz określić jeden, możesz wybrać go z książki adresowej lub wprowadzić go ręcznie. Dodatkowo możesz używać wyrażeń regularnych. Aby przetestować wyrażenie regularne, podoba mi się ta strona:</string>
|
||||
<string name="importConfiguration">Import konfiguracji</string>
|
||||
<string name="exportConfiguration">Eksport konfiguracji</string>
|
||||
<string name="moreSettings">Więcej ustawień</string>
|
||||
<string name="configurationExportedSuccessfully">Pomyślnie wyeksportowano konfigurację.</string>
|
||||
<string name="ConfigurationExportError">Wystąpił błąd podczas eksportowania konfiguracji.</string>
|
||||
<string name="rulesImportedSuccessfully">Reguły i lokalizacje zostały pomyślnie zaimportowane.</string>
|
||||
<string name="rulesImportError">Podczas importowania reguł i lokalizacji wystąpił błąd.</string>
|
||||
<string name="configurationImportedSuccessfully">Pomyślnie zaimportowano konfigurację.</string>
|
||||
<string name="prefsImportError">Podczas importowania preferencji wystąpił błąd.</string>
|
||||
<string name="noApplicableFilesFoundInDirectory">W tym katalogu nie znaleziono odpowiednich plików.</string>
|
||||
<string name="noFilesImported">Nie można zaimportować żadnego pliku.</string>
|
||||
<string name="notAllFilesImported">Nie wszystkie odpowiednie pliki mogły zostać zaimportowane.</string>
|
||||
<string name="importExportExplanation">Klikając przycisk importuj lub eksportuj, wybierasz katalog, z którego pliki są importowane lub eksportowane. Podczas eksportowania istniejące pliki mogą zostać nadpisane.</string>
|
||||
<string name="intentDataComment">Jeśli twój parametr jest typu Uri ORAZ podasz \"IntentData\" jako nazwę (małe/duże litery nie są ważne), parametr nie zostanie dodany jako normalny parametr z putExtra(), ale zamiast tego zostanie dodany do intencji z setData().</string>
|
||||
<string name="stringNotAllowed">Ciąg %1$s jest niedozwolony.</string>
|
||||
<string name="startAppStartType">Wybierz typ startu</string>
|
||||
<string name="startAppByStartActivity">przez startActivity()</string>
|
||||
<string name="startAppBySendBroadcast">przez sendBroadcast()</string>
|
||||
<string name="openExamplesPage">Otwórz stronę internetową z przykładami</string>
|
||||
<string name="packageName">Nazwa paketu</string>
|
||||
<string name="activityOrActionName">Nazwa czynności/akcji</string>
|
||||
<string name="warning">Ostrzeżenie</string>
|
||||
<string name="ringing">dzwonienie</string>
|
||||
<string name="from">z</string>
|
||||
<string name="to">do</string>
|
||||
<string name="matching">dopasowanie</string>
|
||||
<string name="urlRegex" translatable="false">https://regex101.com/</string>
|
||||
<string name="loadWifiList">Załaduj listę Wi-Fi</string>
|
||||
<string name="needLocationPermForWifiList">Lista sieci Wi-Fi, z którymi łączyło się Twoje urządzenie, może zostać wykorzystana do określenia miejsc, w których byłeś. Dlatego do załadowania listy Wi-Fi wymagane jest zezwolenie na lokalizację. Jeśli chcesz mieć możliwość wybrania jedną z listy, musisz udzielić tego pozwolenia. Jeśli tego nie chcesz, nadal możesz ręcznie wprowadzić nazwę Wi-Fi.</string>
|
||||
<string name="noKnownWifis">Na Twoim urządzeniu nie ma żadnych znanych sieci Wi-Fi.</string>
|
||||
<string name="urlToTriggerExplanation">Ta funkcja NIE otwiera przeglądarki, ale uruchamia adres URL w tle. Możesz to wykorzystać np. do wysyłania poleceń do automatyki domowej.</string>
|
||||
<string name="automaticUpdateCheck">Sprawdzanie aktualizacji</string>
|
||||
<string name="automaticUpdateCheckSummary">Dotyczy tylko wersji APK.</string>
|
||||
<string name="updateAvailable">Dostępna jest nowa aktualizacja. Czy chcesz otworzyć przeglądarkę, aby ją pobrać?</string>
|
||||
<string name="locationFound">Znaleziono lokalizację. Sugerowany minimalny promień lokalizacji to %1$d m.</string>
|
||||
<string name="locationFoundInaccurate">Można było znaleźć tylko lokalizację z ograniczoną dokładnością. Może nie działać niezawodnie. Sugerowany minimalny promień lokalizacji to %1$d."</string>
|
||||
<string name="clone">Klonuj</string>
|
||||
<string name="noLocationCouldBeFound">Nie znaleziono pozycji po przekroczeniu limitu czasu wynoszącego %1$s sekund.</string>
|
||||
<string name="pleaseGiveBgLocation">Na następnym ekranie przejdź do uprawnień, a następnie lokalizacji. Tam wybierz \"Zezwalaj cały czas\", aby Automation mógł określić Twoją lokalizację w tle.</string>
|
||||
<string name="vibrate">Wibracje</string>
|
||||
<string name="test">Wyróbuj</string>
|
||||
<string name="VibrateExplanation">Wprowadź czas trwania wibracji, po którym następuje przecinek, a następnie czas trwania pauzy. Możesz połączyć tyle wibracji, ile chcesz. Oddziel je ponownie przecinkami. Np. wzór 100,500,500,1000,100 wibruje 100, czeka 500, wibruje 500, czeka 1000, wibruje 100 ms. Jeśli uważasz, że wibracje są przerywane, spróbuj wydłużyć pauzę przed nimi.</string>
|
||||
<string name="pleaseEnterValidVibrationPattern">Wprowadź prawidłowy wzorzec wibracji.</string>
|
||||
<string name="newsOptIn">Czy chcesz otrzymywać (tylko ważne) wiadomości o tej aplikacji na głównym ekranie? Są one pobierane ze strony dewelopera. Nie będzie żadnych natrętnych powiadomień, tylko tekst na ekranie głównym po otwarciu aplikacji.</string>
|
||||
<string name="top">Góra</string>
|
||||
<string name="bottom">Dół</string>
|
||||
<string name="tabsPlacement">Położenie paska kart</string>
|
||||
<string name="tabsPlacementSummary">Wybierz miejsce umieszczenia paska kart.</string>
|
||||
<string name="wifiApi30">Ponieważ Google schrzanił kolejną część Androida, począwszy od API 30, można wyświetlać tylko aktualnie widoczne Wi-Fi, a nie wszystkie, z którymi łączyło się już Twoje urządzenie.</string>
|
||||
<string name="silentTriggersDnd">UWAGA: Tryb cichy często uruchamia tryb Nie przeszkadzać na nowszych urządzeniach. Jeśli tak się stanie na twoim urządzeniu, zalecam zamiast tego użycie trybu normalnego i obniżenie wszystkich głośności do zera.</string>
|
||||
<string name="tones">Tony</string>
|
||||
<string name="miscellaneous">Różnorodności</string>
|
||||
<string name="dnd">Nie przeszkadzać</string>
|
||||
<string name="dndOff">DND off</string>
|
||||
<string name="dndPriority">Przepuszczaj powiadomienia priorytetowe</string>
|
||||
<string name="dndAlarms">Przepuść alarmy</string>
|
||||
<string name="dndNothing">Nic nie przepuszczaj</string>
|
||||
<string name="dndRemarks">Precyzyjne dostrajanie (takie jak zezwalanie na połączenia telefoniczne, wybieranie określonych numerów itp.) można wykonać tylko z poziomu ustawień systemu.</string>
|
||||
<string name="automationNotificationsIgnored">Jeśli nie wybierzesz konkretnej aplikacji, ale wybierzesz \"Dowolna aplikacja\", powiadomienia z Automation będą ignorowane, aby uniknąć zapętleń.</string>
|
||||
<string name="repeatEveryXseconds">Powtarzaj co x sekund</string>
|
||||
<string name="repeatEveryXsecondsWithVariable">powtarzaj co %1$s sekund</string>
|
||||
<string name="enterRepetitionTime">Musisz wprowadzić dodatnią wartość inną niż dziesiętna dla czasu powtarzania.</string>
|
||||
<string name="elementSkipped">Nie można odczytać elementu pliku konfiguracyjnego. Plik mógł zostać utworzony przez nowszą wersję programu.</string>
|
||||
<string name="donate">Wspomóż</string>
|
||||
<string name="btTetheringNotice">Potwierdzono, że ta funkcja działa do wersji Android 8.0. Od jakiejś wyższej wersji wzwyż przestaje działać, ale z powodu braku fizycznych urządzeń nie jestem w stanie stwierdzić, które to. Na Androidzie 11 zdecydowanie już nie działa. Jeśli masz wersję pośrednią, daj mi znać, czy działa, czy nie.</string>
|
||||
<string name="notice">Wzmianka</string>
|
||||
<string name="deviceOrientation">Orientacja urządzenia</string>
|
||||
<string name="tolerance">Tolerancja (0-180)</string>
|
||||
<string name="orientationAzimuth">Azymut:</string>
|
||||
<string name="orientationPitch">Poziom:</string>
|
||||
<string name="orientationRoll">Rolka:</string>
|
||||
<string name="enterValidNumbersIntoAllFields">Wprowadź prawidłowe liczby we wszystkich polach.</string>
|
||||
<string name="deviceOrientationExplanation">Gdy przeniesiesz urządzenie, poniższe numery zostaną zaktualizowane. To, co możesz tam zobaczyć, to aktualna orientacja twojego urządzenia mierzona w stopniach. Jeśli jest w żądanej orientacji, kliknij przycisk Zastosuj, aby skopiować bieżące wartości do żądanych pól. Ponieważ ponowne osiągnięcie tej dokładnej orientacji jest bardzo mało prawdopodobne, należy również wprowadzić tolerancję. Jest to liczba stopni, o jaką orientacja może odchylić się w dowolnym kierunku. 15° da całkowity kąt 30°, 15° w każdym kierunku. Jeśli zależy Ci tylko na jednej konkretnej osi, określ tolerancję 180° dla dwóch pozostałych.</string>
|
||||
<string name="wouldCurrentlyApply">Czy obecnie miałby zastosowanie?</string>
|
||||
<string name="deviceIsInCertainOrientation">urządzenie znajduje się w określonej orientacji</string>
|
||||
<string name="toleranceOf180OnlyAllowedIn2Fields">Tolerancja 180 jest dozwolona tylko dla 2 pól tolerancji, a nie dla wszystkich 3. W przeciwnym razie wyzwalacz ZAWSZE miałby zastosowanie.</string>
|
||||
<string name="unknown">nieznany</string>
|
||||
<string name="orientation">Orientacja</string>
|
||||
<string name="triggerWrong">Coś jest nie tak z tym wyzwalaczem. Nie można go poprawnie załadować.</string>
|
||||
<string name="turnScreenOnOrOff">Włącz lub wyłącz ekran</string>
|
||||
<string name="turnScreenOn">włącz ekran</string>
|
||||
<string name="turnScreenOff">wyłącz ekran</string>
|
||||
<string name="mustApply">Należy zastosować</string>
|
||||
<string name="deviceOrientationTimeAcceptIntervalTitle">Częstotliwość sygnału</string>
|
||||
<string name="deviceOrientationTimeAcceptIntervalSummary">Akceptuj nowe sygnały ruchu co x milisekund</string>
|
||||
<string name="deviceOrientationSettings">Ustawienia orientacji urządzenia</string>
|
||||
<string name="android.permission.BIND_DEVICE_ADMIN">Administrator urządzenia</string>
|
||||
<string name="deviceAdminNote">Co najmniej 1 utworzona przez Ciebie reguła wymaga uprawnień administratora urządzenia.</string>
|
||||
<string name="explanationDeviceOrientationDirection">Jeśli pole wyboru jest zaznaczone, oznacza to, że urządzenie musi znajdować się w określonej orientacji. Jeśli nie jest zaznaczone, odpowiednia będzie każda orientacja, która NIE spełnia Twoich kryteriów.</string>
|
||||
<string name="permissionsRequiredNotAvailable">Twoje reguły wymagały uprawnień, których nie można uzyskać w tej zainstalowanej odmianie Automation.</string>
|
||||
<string name="smsDialogNotice">Jeśli wcześniej nie korzystałeś z akcji wyślij sms w tym programie, Android może wyświetlić dodatkowe okno dialogowe z prośbą o zezwolenie na wysyłanie wiadomości. Musisz zaznaczyć pole wyboru \"zawsze zezwalaj\" i potwierdzić, czy chcesz, aby ta akcja działała w tle. Zaleca się jednorazowe uruchomienie tej reguły ręcznie, aby wyświetlić okno dialogowe potwierdzenia.</string>
|
||||
<string name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS">Wyklucz z optymalizacji baterii</string>
|
||||
<string name="recommendedForBetterReliability">Zalecane dla lepszej niezawodności</string>
|
||||
<string name="needsToBeActive">Musi być aktywny</string>
|
||||
<string name="checkSettings">Sprawdź ustwienia</string>
|
||||
<string name="profileActive">profil %1$s jest aktywny</string>
|
||||
<string name="profileNotActive">profil %1$s nie jest aktywny</string>
|
||||
<string name="profileTriggerCheckSettings">Jeśli to pole wyboru nie jest wyłączone, zostanie zaznaczone tylko wtedy, gdy wybrany profil był aktywowany jako ostatni. Nie ma znaczenia, czy jakiekolwiek ustawienia związane z dźwiękiem zostały zmienione z zewnątrz. Jeśli jednak pole wyboru jest zaznaczone, bieżące ustawienia audio naprawdę muszą być takie, jak określono w profilu. UWAGA: Sprawdzanie pliku dzwonka nie jest jeszcze obsługiwane.</string>
|
||||
<string name="ruleXIsUsingProfileY">Nie można usunąć tego profilu. Reguła %1$s odwołuje się do profilu %2$s.</string>
|
||||
<string name="profileCouldNotBeDeleted">Nie można usunąć profilu.</string>
|
||||
<string name="noRepetition">bez powtórzeń</string>
|
||||
<string name="usingAuthentication">za pomocą uwierzytelniania</string>
|
||||
<string name="toNumber">na numer</string>
|
||||
<string name="message">wiadomość</string>
|
||||
<string name="onDays">w dni</string>
|
||||
<string name="notSet">nie ustawiony</string>
|
||||
<string name="takeLauncherActivity">Znajdź automatyczne</string>
|
||||
<string name="pickActivityManually">Wybierz manualnie</string>
|
||||
<string name="launcherOrManualExplanation">Tryb łatwy: automatyzacja może próbować automatycznie zidentyfikować aktywność programu uruchamiającego żądany program. Alternatywnie możesz także ręcznie wybrać jedną z czynności aplikacji. Co byś chciał?</string>
|
||||
<string name="launcherNotFound">Nie można zidentyfikować działania programu uruchamiającego tej aplikacji. Będziesz musiał wybrać jeden ręcznie.</string>
|
||||
<string name="createNotification">Utwórz powiadomienie</string>
|
||||
<string name="enterTitle">Wpisz tytuł.</string>
|
||||
<string name="enterText">Wpisz tekst.</string>
|
||||
<string name="info">Info</string>
|
||||
<string name="profileWasNotFound">Wygląda na to, że profil użyty w tej regule już nie istnieje. Wybrano pierwszy w kolejności alfabetycznej.</string>
|
||||
<string name="notificationCloseActionExplanation">Jeśli nie określisz żadnych kryteriów, ta czynność spowoduje zamknięcie WSZYSTKICH powiadomień. Dlatego zaleca się przynajmniej określenie kryteriów dla co najmniej 1 aplikacji, tytułu lub tekstu.</string>
|
||||
<string name="closeNotifications">Zamknij powiadomienie(a)</string>
|
||||
<string name="comparisonCaseInsensitive">Porównania nie uwzględniają wielkości liter</string>
|
||||
<string name="profileWarning">Ustawienia, które możesz tutaj dostosować, mogą sprawić, że nie będziesz już zauważać pewnych rzeczy w swoim telefonie. Mogą nawet wyciszyć budzik. Więc cokolwiek robisz - zdecydowanie zalecamy przetestowanie tego - także po aktualizacjach Androida.</string>
|
||||
<string name="ifString">jeśli</string>
|
||||
<string name="emailContactNotice">E-mail to moja preferowana metoda kontaktu w celu zgłaszania błędów, zadawania pytań lub składania propozycji. Przejdź do centrum sterowania, aby dowiedzieć się więcej.\nNa wiele pytań nie można odpowiedzieć od razu, ale wymagają one pewnych działań technicznych. Prosimy więc o odrobinę cierpliwości.</string>
|
||||
<string name="controlCenter">Centrum kontroli</string>
|
||||
<string name="sendEmailToDev">Wyślij wiadomość e-mail do programisty</string>
|
||||
<string name="screenIs">ekran to %1$s</string>
|
||||
<string name="on">włączony</string>
|
||||
<string name="off">wyłączony</string>
|
||||
<string name="unlocked">odblokowany</string>
|
||||
<string name="selectDesiredState">Wybierz żądany stan</string>
|
||||
<string name="screenState">Stan ekranu</string>
|
||||
<string name="featureCeasedToWorkLastWorkingAndroidVersion">Dzięki nieskończonej mądrości Google\'a ostatnią wersją Androida, na której działa ta funkcja, jest %1$s. Możesz to skonfigurować, ale prawdopodobnie nie przyniesie to żadnego efektu.</string>
|
||||
<string name="actionMediaControl">Steruj odtwarzaniem multimediów</string>
|
||||
<string name="selectCommand">Wybierz komendę</string>
|
||||
<string name="playPause">przełączanie odtwarzania/pauzy</string>
|
||||
<string name="play">odtwarzaj</string>
|
||||
<string name="pause">pauza</string>
|
||||
<string name="previous">poprzedni</string>
|
||||
<string name="next">następny</string>
|
||||
<string name="android.permission.MEDIA_CONTENT_CONTROL">Steruj odtwarzaniem multimediów</string>
|
||||
<string name="stop">stop</string>
|
||||
<string name="pleaseSelectActionValue">Wybierz działanie!</string>
|
||||
<string name="actionMediaControlNotice">Pamiętaj, że ta czynność może nie działać w przypadku WSZYSTKICH graczy. A nawet jeśli tak, nie każdy przycisk może działać.</string>
|
||||
<string name="musicPlaying">Odtwarzanie muzyki</string>
|
||||
<string name="selectParameters">Wybierz parametry</string>
|
||||
<string name="musicIsPlaying">muzyka jest odtwarzana</string>
|
||||
<string name="musicIsNotPlaying">muzyka nie jest odtwarzana</string>
|
||||
<string name="musicPlayingDetection">Wykrywanie odtwarzania muzyki</string>
|
||||
<string name="musicCheckFrequencyTitle">Sprawdź częstotliwość [ms]</string>
|
||||
<string name="musicCheckFrequencySummary">Milisekundy między kontrolami</string>
|
||||
<string name="locationNotWorkingOn12">Wygląda na to, że obecnie pobieranie lokalizacji nie działa na urządzeniach z Androidem 12. Jeśli to nie działa, przepraszam. Spróbuję to naprawić, gdy tylko poznam przyczynę. Więc jeśli pączek nie przestaje się obracać, wiesz dlaczego.</string>
|
||||
<string name="lastProfile">Ostatni profil:</string>
|
||||
<string name="queryAllPackages">Pobierz listę zainstalowanych aplikacji</string>
|
||||
<string name="timeFrameDaysHint">Jeśli używasz przedziału czasowego, który rozciąga się na północ, musisz wybrać również następny dzień, jeśli chcesz, aby wyzwalacz obowiązywał po północy.</string>
|
||||
<string name="featureNotInGooglePlayVersion">Ta funkcja nie jest już dostępna w wersji Google Play.\n\nCo jakiś czas Google dręczy programistów. Jeśli chcesz nadal korzystać z niektórych funkcji, musisz złożyć dokumenty. Niestety istnieje 99% szans, że dokumenty zostaną odrzucone. To prawie jak w komiksie/filmie Asterix.\n\nSpędziłem tygodnie kłócąc się z nimi o podobne sprawy w przeszłości, ale ciągle dostawałem odmowy – albo przez boty, albo przez ludzi, którzy są mniej więcej tak samo inteligentni jako boty. Mogę zdecydować, czy aplikacja ma zostać całkowicie usunięta ze Sklepu Play, czy usunąć tę funkcję.\nJeśli potrzebujesz tych funkcji, rozważ użycie wersji APK z mojej witryny lub wersji F-Droid.</string>
|
||||
<string name="startActivityInsertManually">To ograniczenie dotyczy tylko wyboru aplikacji, a nie samego uruchomienia. Więc nadal możesz ręcznie wprowadzić nazwę aplikacji, jeśli ją znasz.</string>
|
||||
<string name="deviceStarts">Uruchomienie urządzenias</string>
|
||||
<string name="serviceStarts">Uruchomienie usługi</string>
|
||||
<string name="deviceIsStarting">urządzenie się uruchamia</string>
|
||||
<string name="serviceIsStarting">usługa się uruchamia</string>
|
||||
<string name="broadcastReceived">odebrana transmisja</string>
|
||||
<string name="broadcastNotReceived">transmisja nie została odebrana</string>
|
||||
<string name="explanationBroadcastTrigger">Większość zdarzeń w telefonie zostanie \"opublikowana\" poprzez rozgłaszanie ich w całym systemie operacyjnym.\nNa przykład włączenie/wyłączenie trybu samolotowego uruchomi taką transmisję. Te transmisje nie są automatycznie widoczne/słyszalne, ale jeśli aplikacja (np. Automation) jest zainteresowana, może się z nimi połączyć. Kiedy wystąpią, zostanie o tym powiadomiony i może zareagować.\n\nMożesz tutaj zdefiniować zdarzenie rozgłoszeniowe, na które aplikacja będzie czekać. Możesz wprowadzić je ręcznie, skopiować & wklej je skądś lub wybierz jedną z listy sugestii. Ponieważ ten wyzwalacz ma być i pozostanie bardzo elastyczny, nie mogę podać wyjaśnień dotyczących elementów.\n\nLista sugestii nie jest kompletna. Odwiedź poniższy adres URL, aby zapoznać się z dokumentacją Androida.\nPonadto każda aplikacja może wysyłać niestandardowe zdarzenia, które oczywiście nie pojawią się w dokumentacji Androida.\n\nWiele transmisji wymaga określonych uprawnień do działania. Staram się prosić o uprawnienia tam, gdzie wiem, że będą wymagane. Jeśli uważasz, że wymagana jest zgoda dla wprowadzonej czynności, daj mi znać.\n\nNie otrzymano oznacza, że nie było takiej transmisji od momentu uruchomienia usługi. Reagowanie na określone parametry jest w fazie rozwoju.</string>
|
||||
<string name="broadcastListUrl" translatable="false">https://developer.android.com/reference/android/content/Intent.html</string>
|
||||
<string name="broadcastReceivedTitle">Odebrano transmisję</string>
|
||||
<string name="logsExplanation">Aby uniknąć niepotrzebnego zużywania pamięci, logi nie są domyślnie zapisywane. Więc jeśli masz problem, najpierw aktywuj ustawienia logowania i ustaw poziom logowania na 5. Następnie odtwórz problem. Dopiero wtedy można dołączyć logi.</string>
|
||||
<string name="broadcastsShowSuggestions">Pokaż sugestie</string>
|
||||
<string name="selectBroadcast">Wybierz transmisję</string>
|
||||
<string name="lockedWithoutSecurity">zablokowany (tylko przesunięcie palcem, bez kodu PIN)</string>
|
||||
<string name="lockedWithSecurity">zablokowany (z PINem itp.)</string>
|
||||
<string name="lockedCommentScreenMustBeOff">Każdy stan zablokowania zostanie wykryty tylko wtedy, gdy ekran jest wyłączony.</string>
|
||||
<string name="emailPretext">Jeśli masz problem, sugestie lub pytanie, napisz coś w mailu. Nie wysyłaj mi tylko plików z domyślną treścią wiadomości. Zignoruję je, chyba że prowadzimy już rozmowę.</string>
|
||||
<string name="sendBroadcast">Wyślij transmisję</string>
|
||||
<string name="enterBroadcast">Wprowadź akcję rozgłaszania.</string>
|
||||
<string name="broadcastExplanation">Ta czynność umożliwia wysłanie rozgłoszenia przez system przesyłania wiadomości Android OS. Nie jest to widoczne dla użytkownika, ale aplikacje, które nasłuchują tej konkretnej transmisji, mogą odpowiedzieć na jej wysłanie.</string>
|
||||
<string name="directionStringDoesNotContain">nie zawiera</string>
|
||||
<string name="runExecutable">Uruchom skrypt lub plik wykonywalny</string>
|
||||
<string name="path">Ścieżka</string>
|
||||
<string name="parameters">Parametry</string>
|
||||
<string name="chooseExecutable">Wybierz plik wykonywalny</string>
|
||||
<string name="runAsRoot">Uruchom jako root</string>
|
||||
<string name="selectValidExecutable">Wybierz prawidłowy plik wykonywalny.</string>
|
||||
<string name="fileNotExecutable">Plik nie jest wykonywalny.</string>
|
||||
<string name="wifiExplanation1">Aplikacje kierowane na system Android Q lub nowszy nie mogą już włączać ani wyłączać Wi-Fi. Obwiniaj Google za to ograniczenie, nie mnie. Możesz ominąć to ograniczenie, rootując urządzenie i zaznaczając pole wyboru poniżej. Alternatywnie pobierz tę aplikację z F-Droid lub mojej strony internetowej, ponieważ nie jestem zmuszony celować w najnowszy poziom API w tych wersjach.</string>
|
||||
<string name="wifiExplanation2">Gdy tryb samolotowy jest włączony, Wi-Fi można przełączać z aplikacji tylko wtedy, gdy używasz do tego uprawnień roota.</string>
|
||||
<string name="usingRoot">używając roota</string>
|
||||
<string name="runExecutableExplanation">Możesz tutaj wybrać skrypt lub plik wykonywalny, który zostanie wykonany jako akcja.\n\nAle są pewne warunki wstępne, z którymi musisz sobie poradzić samodzielnie. Google bardzo utrudnił uruchamianie czegokolwiek poza zwykłymi aplikacjami na Androida.\n\n1. Skrypt musi być oznaczony jako wykonywalny. W zwykłym systemie Android (bez roota) jest to właściwie najtrudniejsza część.\n\n2. Oznacza to również, że Automation musi być w stanie wykonać plik, a nie tylko właściciel lub grupa.\n\n3. Jeśli jest to skrypt, w nagłówku skryptu należy określić poprawną powłokę.\n\nJeśli nie możesz spełnić powyższych wymagań, możesz alternatywnie spróbować określić powłokę jako plik wykonywalny (jak /system/bin/sh ) i twój skrypt jako parametr. To zadziałało dla co najmniej jednego użytkownika.</string>
|
||||
<string name="tetheringActive">tethering jest aktywny</string>
|
||||
<string name="tetheringNotActive">tethering nie jest aktywnye</string>
|
||||
<string name="tetheringState">Stan tetheringu</string>
|
||||
<string name="regularExpressionsIfEquals">Jeśli wybrano opcję \"równa się\", można wprowadzić wyrażenie regularne.</string>
|
||||
<string name="enter_a_number">Wpisz numer.</string>
|
||||
<string name="duration">Czas trwania [ms]</string>
|
||||
<string name="keepDeviceAwake">Utrzymuj urządzenie w stanie uśpienia</string>
|
||||
<string name="wakeLockTimeout">Określ limit czasu</string>
|
||||
<string name="wakeLockExplanation">Aktywuj spowoduje, że ekran będzie włączony, a dezaktywacja pozwoli mu się wyłączyć. Aby utrzymać go włączonym, możesz wprowadzić czas, po którym może się ponownie wyłączyć lub możesz ją włączyć na czas nieokreślony. W tym drugim przypadku musiałbyś utworzyć kolejną akcję ostrzegającą (w tej lub innej regule), w której wybierasz dezaktywuj.</string>
|
||||
<string name="mayUseRegularExpressions">Możesz również wprowadzić tutaj wyrażenie regularne.</string>
|
||||
<string name="simplyDismissNotification">Po prostu odrzuć</string>
|
||||
<string name="clickNotificationButton">Kliknij przycisk</string>
|
||||
<string name="withButton">za pomocą przycisku %1$s</string>
|
||||
<string name="subSystemState">Stan podsystemu</string>
|
||||
<string name="bluetooth">Bluetooth</string>
|
||||
<string name="locationRequiredToDetermineWifiName">Aby uzyskać identyfikator SSID Wi-Fi, aplikacja wymaga uprawnień do lokalizacji. Ponieważ wersja Google nie może tego uzyskać, możesz użyć tego wyzwalacza tylko wtedy, gdy nie określisz identyfikatora SSID. Można go więc używać tylko do wykrywania, czy Wi-Fi jest podłączone, czy nie.</string>
|
||||
<string name="usb">USB</string>
|
||||
<string name="type">Typ</string>
|
||||
<string name="cable">Kabel</string>
|
||||
<string name="tetheringBluetoothNotPossible">Obecnie nie można wykryć tetheringu przez Bluetooth. Tylko inne sposoby połączenia aktywują ten wyzwalacz.</string>
|
||||
<string name="startPhoneCall">Zadzwoń pod numer telefonu</string>
|
||||
<string name="android.permission.CALL_PHONE">Zadzwoń pod numer telefonu</string>
|
||||
<string name="makePhoneCallExplanation1">Tutaj możesz wprowadzić numer telefonu, pod który zadzwonisz bez dalszych monitów. Możesz użyć tego do wprowadzania ustawień, takich jak dostosowywanie tras połączeń itp. Proszę samodzielnie wyszukać wymagane do tego kody.</string>
|
||||
<string name="endPhoneCall">Zakończ połączenie</string>
|
||||
<string name="android.permission.ANSWER_PHONE_CALLS">Zakończ połączenie</string>
|
||||
<string name="setVariable">Ustaw zmienną</string>
|
||||
<string name="deleteVariable">Uuń zmienną</string>
|
||||
<string name="VariableKey">Klucz zmiennej</string>
|
||||
<string name="variableValue">Wartość zmiennej</string>
|
||||
<string name="setVariableExplanation">Jeśli ustawisz zmienną na pustą wartość, zostanie ona usunięta.</string>
|
||||
<string name="enterVariableKey">Wprowadź klucz dla zmiennej.</string>
|
||||
<string name="checkVariable">Sprawdź zmienną</string>
|
||||
<string name="checkVariableExplanation">Jeśli pozostawisz wartość pustą, zmienna nie może być ustawiona, aby warunek zwrócił wartość true.</string>
|
||||
<string name="variableCheckString">jeśli zmienna %1$s to %2$s</string>
|
||||
<string name="variableCheckStringDeleted">jeśli zmienna %1$s nie jest ustawiona</string>
|
||||
<string name="messageType">Typ wiadomości</string>
|
||||
<string name="sms">SMS</string>
|
||||
<string name="mms">MMS</string>
|
||||
<string name="attachment">Załącznik</string>
|
||||
<string name="chooseFile">wybierz plik</string>
|
||||
<string name="startAppByStartService">przez startService()</string>
|
||||
<string name="showToastsForEvents">Pokaż toasty</string>
|
||||
<string name="showToastsForEventsSummary">Pokazuj toasty, gdy wystąpią zdarzenia takie jak wykonanie reguły</string>
|
||||
<string name="notificationAccessAndroid13">Po kliknięciu ok, wybierz Automation, następnie \"Zezwól na dostęp do powiadomień\", a następnie \"zezwól\".\n\nW niektórych systemach to ustawienie jest wyszarzone. W takich przypadkach należy przejść do \"ustawienia\" -> \"aplikacje\" -> \"Automatyzacja\" -> menu z trzema kropkami -> Znieś te ograniczenia. Następnie wróć tutaj.</string>
|
||||
<string name="displayLanguage">Wyświetl język</string>
|
||||
<string name="displayLanguageSummary">Ustaw niestandardowy język dla aplikacji</string>
|
||||
<string name="wifiMonitoringAlsoRequiresThis">To uprawnienie jest również wymagane, jeśli wyzwalacz korzysta z bieżącego połączenia Wi-Fi.</string>
|
||||
<string name="copyTextToClipboard">Kopiuj tekst do schowka</string>
|
||||
<string name="textToCopy">Tekst do skopiowania</string>
|
||||
<string name="android.permission.SYSTEM_ALERT_WINDOW">Wyświetlaj nad innymi aplikacjami</string>
|
||||
<string name="overlayPermissionHint">Po kliknięciu OK zostaniesz przekierowany do systemowego okna dialogowego. Wybierz tam Automation i zezwól na „wyświetlaniee nad innymi aplikacjami”.</string>
|
||||
<string name="variablesOnlyForTypes">Zmienne są dostępne tylko dla typów parametrów String i URI</string>
|
||||
<string name="intentParametersHint">Jeśli chcesz określić parametr, musisz również kliknąć \"Dodaj parę intencji\". W przeciwnym razie zmiany nie zostaną zapisane.</string>
|
||||
<string name="languageSystemDefault">Domyślne ustawienia systemowe</string>
|
||||
<string name="languageEnglish">Angielski</string>
|
||||
<string name="languageGerman">Niemiecki</string>
|
||||
<string name="languageItalian">Włoski</string>
|
||||
<string name="languageSpanish">Hiszpański</string>
|
||||
<string name="languageDutch">Holenderski</string>
|
||||
<string name="languageRussian">Rosyjski</string>
|
||||
<string name="languageFrench">Francuski</string>
|
||||
<string name="languagePolish">Polski</string>
|
||||
<string name="languageChineseChina">Chiński (Chiny)</string>
|
||||
<string name="wifiTriggerDisconnectionHint">Ten wyzwalacz będzie prawidłowy, jeśli właśnie rozłączyłeś się z Wi-Fi określonym powyżej LUB gdy usługa jest nadal uruchomiona i jeśli nie masz połączenia z żadną siecią Wi-Fi. Jeśli chcesz, aby wyzwalacz uruchamiał się tylko wtedy, gdy jawnie rozłączasz się z określoną siecią Wi-Fi, dodaj kolejny wyzwalacz \"usługa nie uruchamia się\".</string>
|
||||
<string name="className">nazwa klasy</string>
|
||||
<string name="startAppByStartForegroundService">przez startForegroundService()</string>
|
||||
</resources>
|
@ -1,5 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="languageSystemDefault">Системное значение по умолчанию</string>
|
||||
<string name="languageEnglish">Английский</string>
|
||||
<string name="languageGerman">Немецкий</string>
|
||||
<string name="languageItalian">Итальянский</string>
|
||||
<string name="languageSpanish">Испанский</string>
|
||||
<string name="languageDutch">Нидерландский</string>
|
||||
<string name="languageRussian">русский</string>
|
||||
<string name="languageFrench">Французский</string>
|
||||
<string name="ruleActivate">Активация правила %1$s</string>
|
||||
<string name="profileActivate">Активация профиля %1$s</string>
|
||||
<string name="ruleActivateToggle">Активация правила %1$s в режиме переключения</string>
|
||||
@ -57,7 +65,7 @@
|
||||
<string name="end">Конец</string>
|
||||
<string name="save">Сохранить</string>
|
||||
<string name="urlToTrigger">URL для вызова:</string>
|
||||
<string name="urlLegend">Переменные:\nВы можете использовать следующие переменные. При срабатывании они будут заменены соответствующим значением на вашем устройстве. Скобки- часть переменной.\n\n[uniqueid] - уникальный идентификатор\n[serialnr] - серийный номер(< Android 9)\n[latitude] - широта\n[longitude] - долгота\n[phonenr] - Номер последнего входящего или исходящего вызова\n[d] - День месяца, 2 цифры с начальными нулями\n[m] – Месяц, 2 цифры с начальными нулями\n[Y] - Год, 4 цифры\n[h] - 12-часовой формат часа с начальными нулями\n[H] - 24-часовой формат часа с начальными нулями\n[i] - Минуты с начальными нулями\n[s] - Секунды с начальными нулями\n[ms] - миллисекунды\n[notificationTitle] - заголовок последнего уведомления\n[notificationText] - текст последнего уведомления</string>
|
||||
<string name="urlLegend">Переменные:\nВы можете использовать следующие переменные. При срабатывании они будут заменены соответствующим значением на вашем устройстве. Скобки- часть переменной.\n\n[uniqueid] - уникальный идентификатор\n[serialnr] - серийный номер(< Android 9)\n[latitude] - широта\n[longitude] - долгота\n[phonenr] - Номер последнего входящего или исходящего вызова\n[d] - День месяца, 2 цифры с начальными нулями\n[m] – Месяц, 2 цифры с начальными нулями\n[Y] - Год, 4 цифры\n[h] - 12-часовой формат часа с начальными нулями\n[H] - 24-часовой формат часа с начальными нулями\n[i] - Минуты с начальными нулями\n[s] - Секунды с начальными нулями\n[ms] - миллисекунды\n[notificationTitle] - заголовок последнего уведомления\n[notificationText] - текст последнего уведомления\n[variable-VARIABLENAME] - Значение переменной, определенной пользователем</string>
|
||||
<string name="wifi">Wi-Fi</string>
|
||||
<string name="activating">Активация</string>
|
||||
<string name="deactivating">Деактивация</string>
|
||||
@ -112,7 +120,7 @@
|
||||
<string name="soundSettings">Настройки звука</string>
|
||||
<string name="showHelp">Показать справку</string>
|
||||
<string name="rules">Правила</string>
|
||||
<string name="helpTextRules">Все триггеры в правиле связаны логикой И. Правило будет применяться только в том случае, если будут выполнены все триггеры. Если вы хотите логику ИЛИ, создайте другое правило.</string>
|
||||
<string name="helpTextRules">Все триггеры в правиле связаны логикой И. Правило будет применяться только в том случае, если будут выполнены все триггеры. Если вы хотите логику ИЛИ, создайте другое правило.\nТермины триггер и условие используются как синонимы. Все они являются условиями, но последний, отвечающий требуемому значению, может быть назван триггером, потому что это последняя часть паззла, которая вызывает выполнение правила.</string>
|
||||
<string name="timeframes">Временные интервалы</string>
|
||||
<string name="helpTextTimeFrame">Если вы указываете правило с временными интервалами, у вас есть два варианта. Вы можете выбрать между началом ИЛИ окончанием временного интервала. Правило срабатывает только один раз. Поэтому, если вы создадите правило с "начало временного интервала" в качестве триггера и позволите ему изменить ваш звуковой профиль на вибрацию, это не означает, что телефон автоматически перейдет в обычный режим, когда временной интервал закончится. Если вам это необходимо,создайте другое правило с другим временным интервалом.</string>
|
||||
<string name="helpTextSound">На главном экране есть возможность заблокировать изменение уровня громкости вызова сконфигурированными правилами, например, вы можете быть в ситуации или месте, где необходим обычный режим звука, но в настоящее время его использовать нельзя. Эта функция автоматически отключится по истечении заданного времени. Нажмите кнопку +, чтобы задать необходимый период времени. После включения, вы можете вручную выключить его с помощью кнопки переключения (и таким образом снова включить изменения громкости звука).</string>
|
||||
@ -205,12 +213,12 @@
|
||||
<string name="runManually">Запуск вручную</string>
|
||||
<string name="serviceHasToRunForThat">Для этого служба должна быть запущена.</string>
|
||||
<string name="gpsComparison">Сравнение GPS</string>
|
||||
<string name="gpsComparisonTimeoutStop" translatable="false">Stopping comparison GPS measurement due to timeout.</string>
|
||||
<string name="gpsComparisonTimeoutStop" translatable="false">Остановка измерений GPS из-за превышения времени ожидания.</string>
|
||||
<string name="timeoutForGpsComparisonsTitle">Тайм-аут GPS [сек]</string>
|
||||
<string name="timeoutForGpsComparisonsSummary">Максимальное время получения GPS-местоположения в секундах. По истечении этого времени будет применено последнее известное местоположение.</string>
|
||||
<string name="startingGpsTimeout" translatable="false">Starting GPS timeout.</string>
|
||||
<string name="forcedLocationUpdate" translatable="false">Forced location update</string>
|
||||
<string name="forcedLocationUpdateLong" translatable="false">Due to timeout in comparison measurement the last best location will be applied.</string>
|
||||
<string name="startingGpsTimeout" translatable="false">Запуск ожидания GPS.</string>
|
||||
<string name="forcedLocationUpdate" translatable="false">Принудительное обновление местоположения</string>
|
||||
<string name="forcedLocationUpdateLong" translatable="false">Из-за таймаута измерений будет использовано последнее успешное местоположение.</string>
|
||||
<string name="rememberLastActivePoiSummary">Если вы находитесь в каком-то местоположении, перезагружаете устройство или приложение и покидаете это местоположение, при старте приложение будет запускать правила, связанные с выходом из этого местоположения.</string>
|
||||
<string name="rememberLastActivePoiTitle">Запомнить последнее активное местоположение</string>
|
||||
<string name="muteTextToSpeechDuringCallsTitle">Отключение звука во время звонков</string>
|
||||
@ -224,37 +232,37 @@
|
||||
<string name="errorStartingOtherActivity">Ошибка запуска Activity</string>
|
||||
<string name="anotherAppIsRunning">Другое приложение запускается/останавливается</string>
|
||||
<string name="settingsCategoryProcessMonitoring">Мониторинг процесса</string>
|
||||
<string name="timeBetweenProcessMonitoringsTitle">Период мониторингама процесса в секундах</string>
|
||||
<string name="timeBetweenProcessMonitoringsTitle">Период мониторинга процесса в секундах</string>
|
||||
<string name="timeBetweenProcessMonitoringsSummary">Чем меньше, тем выше расход батареи</string>
|
||||
<string name="refreshingProcessList" translatable="false">Refreshing process list.</string>
|
||||
<string name="refreshingProcessList" translatable="false">Обновление списка процессов.</string>
|
||||
<string name="processes">Процессы</string>
|
||||
<string name="startingPeriodicProcessMonitoringEngine" translatable="false">Starting periodic process monitoring engine.</string>
|
||||
<string name="startingPeriodicProcessMonitoringEngine" translatable="false">Запуск периодического мониторинга процессов.</string>
|
||||
<string name="processMonitoring">Мониторинг процесса</string>
|
||||
<string name="periodicProcessMonitoringIsAlreadyRunning" translatable="false">Periodic process monitoring is already running. Won\'t start it again.</string>
|
||||
<string name="stoppingPeriodicProcessMonitoringEngine" translatable="false">Stopping periodic process monitoring engine.</string>
|
||||
<string name="periodicProcessMonitoringIsNotActive" translatable="false">Periodic process monitoring is not active. Can\'t stop it.</string>
|
||||
<string name="periodicProcessMonitoringStarted" translatable="false">Periodic process monitoring started.</string>
|
||||
<string name="periodicProcessMonitoringStopped" translatable="false">Periodic process monitoring stopped.</string>
|
||||
<string name="rearmingProcessMonitoringMessage" translatable="false">Rearming process monitoring message.</string>
|
||||
<string name="notRearmingProcessMonitoringMessageStopRequested" translatable="false">Not rearming process monitoring message, stop requested.</string>
|
||||
<string name="messageReceivedStatingProcessMonitoringIsComplete" translatable="false">Message received stating process monitoring is complete.</string>
|
||||
<string name="appStarted" translatable="false">App started.</string>
|
||||
<string name="appStopped" translatable="false">App stopped.</string>
|
||||
<string name="runningApp" translatable="false">Running app</string>
|
||||
<string name="errorWritingSettingsToPersistentMemory" translatable="false">Error writing settings to persistent memory.</string>
|
||||
<string name="periodicProcessMonitoringIsAlreadyRunning" translatable="false">Периодический мониторинг процессов уже запущен и не может быть запущен еще раз.</string>
|
||||
<string name="stoppingPeriodicProcessMonitoringEngine" translatable="false">Остановка периодического мониторинга процессов.</string>
|
||||
<string name="periodicProcessMonitoringIsNotActive" translatable="false">Периодический мониторинг процессов не запущен, поэтому не может быть остановлен.</string>
|
||||
<string name="periodicProcessMonitoringStarted" translatable="false">Периодический мониторинг процессов запущен.</string>
|
||||
<string name="periodicProcessMonitoringStopped" translatable="false">Периодический мониторинг процессов остановлен.</string>
|
||||
<string name="rearmingProcessMonitoringMessage" translatable="false">Получено сообщение о перезапуске мониторинга процессов.</string>
|
||||
<string name="notRearmingProcessMonitoringMessageStopRequested" translatable="false">Не удалось перезапустить мониторинг процессов, остановка.</string>
|
||||
<string name="messageReceivedStatingProcessMonitoringIsComplete" translatable="false">Получено сообщение о завершении мониторинга процессов.</string>
|
||||
<string name="appStarted" translatable="false">Приложение запущено.</string>
|
||||
<string name="appStopped" translatable="false">Приложение остановлено.</string>
|
||||
<string name="runningApp" translatable="false">Приложение выполняется</string>
|
||||
<string name="errorWritingSettingsToPersistentMemory" translatable="false">Ошибка записи настроек.</string>
|
||||
<string name="settings">Настройки</string>
|
||||
<string name="writingSettingsToPersistentMemory" translatable="false">Writing settings to persistent memory.</string>
|
||||
<string name="refreshingSettingsFromFileToMemory" translatable="false">Refreshing settings from file to memory.</string>
|
||||
<string name="errorReadingSettings" translatable="false">Error reading settings.</string>
|
||||
<string name="invalidStuffStoredInSettingsErasing" translatable="false">Invalid stuff stored in settings. Erasing settings...</string>
|
||||
<string name="initializingSettingsToPersistentMemory" translatable="false">Initializing settings to persistent memory.</string>
|
||||
<string name="errorInitializingSettingsToPersistentMemory" translatable="false">Error initializing settings to persistent memory.</string>
|
||||
<string name="writingSettingsToPersistentMemory" translatable="false">Запись настроек.</string>
|
||||
<string name="refreshingSettingsFromFileToMemory" translatable="false">Загрузка настроек из файла в память.</string>
|
||||
<string name="errorReadingSettings" translatable="false">Ошибка чтения настроек.</string>
|
||||
<string name="invalidStuffStoredInSettingsErasing" translatable="false">Неверное содержимое в настройках. Удаление...</string>
|
||||
<string name="initializingSettingsToPersistentMemory" translatable="false">Инициализация настроек.</string>
|
||||
<string name="errorInitializingSettingsToPersistentMemory" translatable="false">Ошибка инициализации настроек.</string>
|
||||
<string name="settingsErased">Настройки стерты.</string>
|
||||
<string name="settingsSetToDefault">Настройки установлены по умолчанию.</string>
|
||||
<string name="batteryLevel">Уровень заряда батареи</string>
|
||||
<string name="selectSpeed">Выберите скорость</string>
|
||||
<string name="selectBattery">Выберите уровень заряда батареи</string>
|
||||
<string name="applyingSettingsAndRules" translatable="false">Applying settings, rules and locations.</string>
|
||||
<string name="applyingSettingsAndRules" translatable="false">Применение настроек, правил и местоположений.</string>
|
||||
<string name="privacy">Политика конфиденциальности</string>
|
||||
<string name="privacyConfirmationText">На вашем устройстве будет запущен браузер и загрузится политика конфиденциальности с веб-сайта разработчика.</string>
|
||||
<string name="waitBeforeNextAction">Ожидание перед следующим действием</string>
|
||||
@ -266,15 +274,15 @@
|
||||
<string name="moveDown">Переместить вниз</string>
|
||||
<string name="cantMoveUp">Невозможно переместить элемент вверх. Он уже находится на самом верху.</string>
|
||||
<string name="cantMoveDown">Невозможно переместить элемент вниз. Он уже в самом низу.</string>
|
||||
<string name="wifiNameSpecifiedCheckingThat" translatable="false">Wifi name specified, checking that.</string>
|
||||
<string name="wifiNameMatchesRuleWillApply" translatable="false">Wifi name matches. Rule will apply.</string>
|
||||
<string name="noWifiNameSpecifiedAnyWillDo" translatable="false">No wifi name specified, any will do.</string>
|
||||
<string name="ruleCheckOf" translatable="false">RuleCheck of %1$s</string>
|
||||
<string name="wifiNameSpecifiedCheckingThat" translatable="false">Указана сеть Wifi, проверка.</string>
|
||||
<string name="wifiNameMatchesRuleWillApply" translatable="false">Сеть Wifi совпадает. Правило применяется.</string>
|
||||
<string name="noWifiNameSpecifiedAnyWillDo" translatable="false">Не указана сеть Wifi, будет использована любая.</string>
|
||||
<string name="ruleCheckOf" translatable="false">Проверка правила %1$s</string>
|
||||
<string name="airplaneMode">Режим полета</string>
|
||||
<string name="activate">Активировать</string>
|
||||
<string name="deactivate">Деактивировать</string>
|
||||
<string name="airplaneModeSdk17Warning">Начиная с версии Android 4.2 эта функция работает только в том случае, если на вашем устройстве есть root-права.</string>
|
||||
<string name="triggerUrlReplacementPositionError" translatable="false">You asked for a position to be added to your URL. Unfortunately at this point I do not have any location, yet.</string>
|
||||
<string name="triggerUrlReplacementPositionError" translatable="false">Вы запросили добавить координаты в ваш URL. К сожалению, в настоящий момент у меня нет никаких координат.</string>
|
||||
<string name="addIntentValue">Добавить Intent пару</string>
|
||||
<string name="parameterName">Имя параметра</string>
|
||||
<string name="parameterValue">Значение параметра</string>
|
||||
@ -328,7 +336,7 @@
|
||||
<string name="nfcNoNdefIntentBut">Нет NFC NDEF Intent, но</string>
|
||||
<string name="nfcNotSupportedInThisAndroidVersionYet">NFC пока не поддерживается в этой версии Android.</string>
|
||||
<string name="cantRunRule">Не удается запустить правила.</string>
|
||||
<string name="cantDownloadTooFewRequestsInSettings" translatable="false">Can\'t download anything. Amount of http requests in settings is lower than 1.</string>
|
||||
<string name="cantDownloadTooFewRequestsInSettings" translatable="false">Не получается загрузить. Количество http запросов в настройках меньше 1.</string>
|
||||
<string name="nfcApplyTagToRule">Применить метку к правилу</string>
|
||||
<string name="nfcTagReadSuccessfully">Метка прочитана успешно.</string>
|
||||
<string name="nfcValueNotSuitable">Сохранённое значение не подходит.</string>
|
||||
@ -341,19 +349,19 @@
|
||||
<string name="nfcBringTagIntoRangeToRead">Поднесите метку для чтения.</string>
|
||||
<string name="toggleRule">Переключаемое правило</string>
|
||||
<string name="toggling">Переключение</string>
|
||||
<string name="toggle">переключить</string>
|
||||
<string name="toggle">Переключить</string>
|
||||
<string name="overlapBetweenPois">Обнаружено перекрытие с местоположением %1$s на %2$s метров. Уменьшите радиус хотя бы на это значение.</string>
|
||||
<string name="noOverLap" translatable="false">No overlap to other locations detected.</string>
|
||||
<string name="ruleToggable" translatable="false">Rule %1$s is toggable.</string>
|
||||
<string name="ruleNotToggable" translatable="false">Rule %1$s is not suitable for toggling.</string>
|
||||
<string name="noOverLap" translatable="false">Не обнаружено перекрытия с другими местоположениями.</string>
|
||||
<string name="ruleToggable" translatable="false">Правило %1$s переключаемое.</string>
|
||||
<string name="ruleNotToggable" translatable="false">Правило %1$s не переключаемое.</string>
|
||||
<string name="none">Нет</string>
|
||||
<string name="anyLocation">любое местоположение</string>
|
||||
<string name="anyLocation">Любое местоположение</string>
|
||||
<string name="invalidPoiName">Неверное имя для местоположения.</string>
|
||||
<string name="eraseSettings">Стереть настройки</string>
|
||||
<string name="defaultSettings">Настройки по умолчанию</string>
|
||||
<string name="areYouSure">Вы уверены?</string>
|
||||
<string name="poiCouldBeInRange" translatable="false">At least location %1$s could be in range, if not others in addition.</string>
|
||||
<string name="noPoiInRelevantRange" translatable="false">No location in relevant range.</string>
|
||||
<string name="poiCouldBeInRange" translatable="false">По меньшей мере местоположение %1$s должно быть в диапазоне, помимо остальных.</string>
|
||||
<string name="noPoiInRelevantRange" translatable="false">Отсуствуют местоположения в заданном диапазоне.</string>
|
||||
<string name="activityDetection">Обнаружение активности</string>
|
||||
<string name="android.permission.ACTIVITY_RECOGNITION">Обнаружение активности</string>
|
||||
<string name="detectedActivity">Обнаруженная активность:</string>
|
||||
@ -366,8 +374,8 @@
|
||||
<string name="detectedActivityWalking">Ходьба</string>
|
||||
<string name="detectedActivityRunning">Бег</string>
|
||||
<string name="detectedActivityInvalidStatus">Недопустимая активность</string>
|
||||
<string name="ruleDoesntApplyActivityGivenButTooLowProbability" translatable="false">Rule %1$s doesn\'t apply. Detected activity %2$s given, but too low probability (%3$s %%), required %4$s %%.</string>
|
||||
<string name="ruleDoesntApplyActivityNotPresent" translatable="false">Rule %1$s doesn\'t apply. Required activity %2$s not present.</string>
|
||||
<string name="ruleDoesntApplyActivityGivenButTooLowProbability" translatable="false">Правило %1$s не применится. Определенная активность %2$s, но слишком низкая вероятность (%3$s %%), требуется %4$s %%.</string>
|
||||
<string name="ruleDoesntApplyActivityNotPresent" translatable="false">Правило %1$s не применится. Требуемая активность %2$s отсутствует.</string>
|
||||
<string name="selectTypeOfActivity">Выберите вид активности</string>
|
||||
<string name="triggerOnlyAvailableIfPlayServicesInstalled">Этот триггер доступен только, если установлены службы Google Play.</string>
|
||||
<string name="activityDetectionFrequencyTitle">Частота обнаружения активности [сек]</string>
|
||||
@ -387,8 +395,8 @@
|
||||
<string name="bluetoothDeviceInRange">Устройство Bluetooth %1$s в диапазоне.</string>
|
||||
<string name="bluetoothDeviceOutOfRange">Устройство Bluetooth %1$s вне диапазона.</string>
|
||||
<string name="anyDevice">любое устройство</string>
|
||||
<string name="ruleDoesntApplyNotTheCorrectDeviceName" translatable="false">Rule %1$s doesn\'t apply. Not the correct bluetooth device name.</string>
|
||||
<string name="ruleDoesntApplyNotTheCorrectDeviceAddress" translatable="false">Rule %1$s doesn\'t apply. Not the correct bluetooth device address.</string>
|
||||
<string name="ruleDoesntApplyNotTheCorrectDeviceName" translatable="false">Правило %1$s не применится. Неверное имя устройства bluetooth.</string>
|
||||
<string name="ruleDoesntApplyNotTheCorrectDeviceAddress" translatable="false">Правило %1$s не применится. Неверный адрес устройства bluetooth.</string>
|
||||
<string name="noDevice">нет устройства</string>
|
||||
<string name="selectDeviceFromList">один из списка</string>
|
||||
<string name="connectionToDevice">подключение к устройству</string>
|
||||
@ -397,8 +405,8 @@
|
||||
<string name="deviceOutOfRange">устройство вне зоны досягаемости</string>
|
||||
<string name="selectDeviceOption">Выберите опцию устройства.</string>
|
||||
<string name="selectConnectionOption">Выберите вариант подключения.</string>
|
||||
<string name="ruleDoesntApplyDeviceInRangeButShouldNotBe" translatable="false">Rule %1$s doesn\'t apply. Device is in range, but should not be.</string>
|
||||
<string name="ruleDoesntApplyStateNotCorrect" translatable="false">Rule %1$s doesn\'t apply. Wrong state.</string>
|
||||
<string name="ruleDoesntApplyDeviceInRangeButShouldNotBe" translatable="false">Правило %1$s не применится. Устройство в пределах досягаемости, хотя так быть не должно.</string>
|
||||
<string name="ruleDoesntApplyStateNotCorrect" translatable="false">Правило %1$s не применится. Неверное состояние.</string>
|
||||
<string name="triggerHeadsetPlugged">Подключение гарнитуры</string>
|
||||
<string name="actionPlayMusic">Открыть музыкальный плеер</string>
|
||||
<string name="headsetConnected">Гарнитура (тип: %1$s) подключена</string>
|
||||
@ -407,22 +415,22 @@
|
||||
<string name="headphoneMicrophone">Микрофон</string>
|
||||
<string name="headphoneAny">Любой</string>
|
||||
<string name="headphoneSelectType">Выберите тип гарнитуры</string>
|
||||
<string name="ruleDoesntApplyWrongHeadphoneType" translatable="false">Rule %1$s doesn\'t apply. Wrong headphone type.</string>
|
||||
<string name="ignoringActivityDetectionUpdateTooSoon" translatable="false">Ignoring activity detection update. Came in sooner that %1$s seconds.</string>
|
||||
<string name="ruleDoesntApplyWrongHeadphoneType" translatable="false">Правило %1$s не применится. Неверный тип гарнитуры.</string>
|
||||
<string name="ignoringActivityDetectionUpdateTooSoon" translatable="false">Игнорирование запроса обнаружения активности. Получено ранее %1$s секунд.</string>
|
||||
<string name="whatsThis">Что это такое?</string>
|
||||
<string name="atLeastRuleXisUsingY" translatable="false">At least rule \"%1$s\" is using a trigger of type \"%2$s\".</string>
|
||||
<string name="atLeastRuleXisUsingY" translatable="false">По меньшей мере одно правило \"%1$s\" использует триггер типа \"%2$s\".</string>
|
||||
<string name="privacyLocationingTitle">Только приватное определение местоположения</string>
|
||||
<string name="privacyLocationingSummary">Избегайте методов определения местоположения, которые могут отправить ваши данные внешним компаниями, например Google. При включении будет использоваться только GPS, определение местоположения может занять больше времени или работать менее надежно.</string>
|
||||
<string name="enforcingGps" translatable="false">Private Locationing enabled, enforcing GPS use.</string>
|
||||
<string name="notEnforcingGps" translatable="false">Private Locationing not enabled, using regular provider search.</string>
|
||||
<string name="gpsMeasurement" translatable="false">GPS measurement</string>
|
||||
<string name="gpsMeasurementTimeout" translatable="false">GPS measurement stopped due to timeout.</string>
|
||||
<string name="cellMastChanged" translatable="false">Cell tower changed: %1$s</string>
|
||||
<string name="enforcingGps" translatable="false">Private Locationing включен, принудительное использование GPS .</string>
|
||||
<string name="notEnforcingGps" translatable="false">Private Locationing не включен, использование обычных источников.</string>
|
||||
<string name="gpsMeasurement" translatable="false">Измерение GPS</string>
|
||||
<string name="gpsMeasurementTimeout" translatable="false">Измерение GPS остановлено из-за превышение времени ожидания.</string>
|
||||
<string name="cellMastChanged" translatable="false">Сотовая вышка изменилась: %1$s</string>
|
||||
<string name="noiseDetectionHint">Если вы думаете, что обнаружение шума работает некорректно (в зависимости от значения, которое вы указываете), пожалуйста, имейте в виду, что каждое устройство отличается, поэтому вы можете изменить "Эталон для измерения шума" в настройках. См . http://en.wikipedia.org/wiki/Decibel для получения дополнительной информации. Для калибровки устройства можно использовать калибратор громкости на главном экране.</string>
|
||||
<string name="hint">Подсказка</string>
|
||||
<string name="selectNoiseLevel">Выбор уровня шума</string>
|
||||
<string name="poiHasWifiStoppingCellLocationListener" translatable="false">Location has wifi. Stopping CellLocationChangedReceiver.</string>
|
||||
<string name="poiHasNoWifiNotStoppingCellLocationListener" translatable="false">Location doesn\'t have wifi. Not stopping CellLocationChangedReceiver.</string>
|
||||
<string name="poiHasWifiStoppingCellLocationListener" translatable="false">В этом местоположении есть wifi. Остановка CellLocationChangedReceiver.</string>
|
||||
<string name="poiHasNoWifiNotStoppingCellLocationListener" translatable="false">В этом месотположении нет wifi. CellLocationChangedReceiver не будет остановлен .</string>
|
||||
<string name="showOnMap">Показать на карте</string>
|
||||
<string name="noMapsApplicationFound">На вашем устройстве нет приложения просмотра карт.</string>
|
||||
<string name="locationEngineNotActive">Сервис определения местоположения не активен.</string>
|
||||
@ -468,10 +476,10 @@
|
||||
<string name="volumeTest">Калибровка громкости</string>
|
||||
<string name="volumeCalibrationExplanation">Чтобы рассчитать значение дБ для мониторинга шума, необходимо указать так называемое физическое эталонное значение. Пожалуйста, прочтите Wikipedia для получения дополнительной информации. Это значение, скорее всего, разное для каждого телефона. Перетащите ползунок, чтобы изменить физическое эталонное значение. Чем выше опорное значение, тем ниже будет значение дБ. Постоянные измерения будут выполняться каждые %1$s секунд и результаты будут показаны ниже. Нажмите кнопку назад, когда найдете подходящее значение.</string>
|
||||
<string name="settingsWillTakeTime">Некоторые настройки не будут применены до изменения определенных параметров среды или перезапуска службы.</string>
|
||||
<string name="phoneIsRooted" translatable="false">Phone is rooted.</string>
|
||||
<string name="phoneIsNotRooted" translatable="false">Phone is not rooted.</string>
|
||||
<string name="dataConWithRootSuccess" translatable="false">Data connection was successfully changed using superuser permissions.</string>
|
||||
<string name="dataConWithRootFail" translatable="false">Data could not be changed using superuser permissions.</string>
|
||||
<string name="phoneIsRooted" translatable="false">В телефоне есть root-доступ.</string>
|
||||
<string name="phoneIsNotRooted" translatable="false">В телефоне отсутствует root-доступ.</string>
|
||||
<string name="dataConWithRootSuccess" translatable="false">Подключение к данным успешно изменено используя привилегии суперпользователя.</string>
|
||||
<string name="dataConWithRootFail" translatable="false">Подключение к данным не получилось изменить используя привилегии суперпользователя.</string>
|
||||
<string name="rootExplanation">Для того, чтобы эта функция работала, вам нужно получить права root на своем телефоне. После этого вам нужно "запустить правило вручную", чтобы отобразить запрос на разрешение действий суперпользователя. Когда появится запрос на разрешение действий суперпользователя, необходимо ответить утвердительно (Разрешить всегда), в противном случае правило не сможет работать, когда телефон находится без присмотра.</string>
|
||||
<string name="errorWritingConfig">Ошибка записи конфигурации. Есть ли у вас доступная на запись память?</string>
|
||||
<string name="phoneNrReplacementError">Я не смог вставить последний номер телефона в переменную. У меня его нет.</string>
|
||||
@ -495,7 +503,7 @@
|
||||
<string name="appRequiresPermissiontoAccessExternalStorage">Automation требует доступа к внешнему хранилищу для чтения его настроек и правил.</string>
|
||||
<string name="mainScreenPermissionNote">Automation требует большего количества разрешений для полноценного функционирования. Нажмите на этот текст, чтобы узнать больше и запросить их.</string>
|
||||
<string name="invalidDevice">Недопустимое устройство</string>
|
||||
<string name="google_app_id" translatable="false">your app id</string>
|
||||
<string name="google_app_id" translatable="false">Ваш Google app id</string>
|
||||
<string name="logFileMaxSizeSummary">Максимальный размер файла журнала в мегабайтах. Будет перезаписываться при превышении размера.</string>
|
||||
<string name="logFileMaxSizeTitle">Максимальный размер файла журнала [Мб]</string>
|
||||
<string name="android.permission.READ_CALL_LOG">Чтение журнала вызовов</string>
|
||||
@ -541,7 +549,7 @@
|
||||
<string name="chooseActivityHint">В этом последнем окне выбора вам нужно указать конкретное действие (Activity). Другими словами, это похоже на окно нужного приложения. Если вы не знаете какой выбрать, то используйте тот, который имеет "main" или "launcher" в своем названии.</string>
|
||||
<string name="edit">Редактировать</string>
|
||||
<string name="clickAndHoldForOptions">Удерживайте элемент для параметров.</string>
|
||||
<string name="ruleActivationComplete" translatable="false">Rule \"%1$s\" finished.</string>
|
||||
<string name="ruleActivationComplete" translatable="false">Правило \"%1$s\" завершено.</string>
|
||||
<string name="positioningEngine">Служба позиционирования</string>
|
||||
<string name="googleSarcasm">Благодаря бесконечной мудрости Google и постоянному стремлению защитить частную жизнь каждого человека, из всех правил, которых использовали триггеры и действия отправки sms или чтения состояния телефона, данные триггеры и действия были удалены, потому что Google считает это рискованным.</string>
|
||||
<string name="startAutomationAsService">Запуск Automation как службы</string>
|
||||
@ -755,16 +763,16 @@
|
||||
<string name="musicPlayingDetection">Обнаружение воспроизведения музыки</string>
|
||||
<string name="musicCheckFrequencyTitle">Частота проверки [мс]</string>
|
||||
<string name="musicCheckFrequencySummary">Миллисекунды между проверками</string>
|
||||
<string name="locationNotWorkingOn12">Получение местоположения, похоже, не работает на устройствах Android 12 в настоящее время. Если это не коснулось вас, мне очень жаль. Я постараюсь исправить это, как только узнаю причину. Так что если кружочек не перестанет вращаться, вы предупреждены.</string>
|
||||
<string name="locationNotWorkingOn12">Получение местоположения, похоже, не работает на устройствах Android 12 в настоящее время. Если это коснулось вас, мне очень жаль. Я постараюсь это исправить, как только узнаю причину. Так что если кружочек не перестанет вращаться, вы предупреждены.</string>
|
||||
<string name="lastProfile">Последний профиль:</string>
|
||||
<string name="queryAllPackages">Получить список установленных приложений</string>
|
||||
<string name="helpTextEnergySaving">Многие производители устройств пытаются снизить потребление энергии при помощи ограничения работы фоновых приложений. К сожалению, это приводит к тому, что они перестают работать корректно, Automation относится к их числу. Посетите эту <a href="https://dontkillmyapp.com/">web-страницу</a> для того, чтобы узнать как исключить Automation из этого процесса.</string>
|
||||
<string name="timeFrameDaysHint">Если вы используете временной период, который переходит через полночь, вам нужно выбрать следующий день, если хотите, чтобы триггер сработал после полночи.</string>
|
||||
<string name="featureNotInGooglePlayVersion">Эта функция больше не доступа для версии Google Play.\n\nGoogle постоянно усложняет жизнь разработчикам и требуют оформления бумажных заявлений для обоснавания необходимости использования определённых функций. К сожалению, эти заявления в 99% случаев откланяются. Почти как в комиксе Астерикс.\n\nЯ потратил недели на споры с ними, но заявления продолжают отклоняться ботами или людьми со схожим интеллектуальным развитием.\nПожалуйста, используйте версию APK или скачайте его с F-Droid, если вам нужны эти функции.</string>
|
||||
<string name="timeFrameDaysHint">Если вы используете временной период, который переходит через полночь, вам нужно выбрать следующий день, если хотите, чтобы триггер сработал после полуночи.</string>
|
||||
<string name="featureNotInGooglePlayVersion">Эта функция больше не доступа для версии Google Play.\n\nGoogle постоянно усложняет жизнь разработчикам и требуют оформления бумажных заявлений для обоснавания необходимости использования определённых функций. К сожалению, эти заявления в 99% случаев отклоняются. Почти как в комиксе Астерикс.\n\nЯ потратил недели на споры с ними, но заявления продолжают отклоняться ботами или людьми со схожим интеллектуальным развитием.\nПожалуйста, используйте версию APK или скачайте его с F-Droid, если вам нужны эти функции.</string>
|
||||
<string name="startActivityInsertManually">Это ограничение касается только выбора приложения, но не его запуска. Вы можете указать имя приложения вручную, если знаете его.</string>
|
||||
<string name="deviceStarts">Включение устройства</string>
|
||||
<string name="serviceStarts">Запуск службы</string>
|
||||
<string name="deviceIsStarting">устройство запускается</string>
|
||||
<string name="deviceIsStarting">Устройство запускается</string>
|
||||
<string name="serviceIsStarting">Служба запускается</string>
|
||||
<string name="broadcastReceived">получено сообщение broadcast</string>
|
||||
<string name="broadcastNotReceived">сообщение broadcast не получено</string>
|
||||
@ -776,10 +784,10 @@
|
||||
<string name="lockedWithoutSecurity">заблокировано (только swipe, без PIN)</string>
|
||||
<string name="lockedWithSecurity">заблокировано (с PIN и т.д.)</string>
|
||||
<string name="lockedCommentScreenMustBeOff">Любое состояние блокировки будет обнаружено только когда экран выключен.</string>
|
||||
<string name="emailPretext">Если вы обнаружили проблему или хотите задать вопрос или предложить улучшение, пожалуйста, напишите что-нибудь в теле письма. Не нужно просто отправлять мне скриншоты без текста. Подобные письма будут проигнорированы, за исключением подобных писем, которые часть уже существующей переписки.</string>
|
||||
<string name="emailPretext">Если вы обнаружили проблему или хотите задать вопрос или предложить улучшение, пожалуйста, напишите что-нибудь в теле письма. Не нужно просто отправлять мне скриншоты без текста. Подобные письма будут проигнорированы, за исключением тех писем, которые уже являются частью существующей переписки.</string>
|
||||
<string name="sendBroadcast">Отправить broadcast</string>
|
||||
<string name="enterBroadcast">Ввести broadcast действие.</string>
|
||||
<string name="broadcastExplanation">Это действиет позволяет отправить Broadcast сообщение через систему сообщений Android. Их невидно пользователю, но приложения, которые "слушают" определённые сообщения могут реагировать на них определённым образом.</string>
|
||||
<string name="broadcastExplanation">Это действиет позволяет отправить Broadcast сообщение через систему сообщений Android. Их не видно пользователю, но приложения, которые "слушают" определённые сообщения могут реагировать на них определённым образом.</string>
|
||||
<string name="directionStringDoesNotContain">не содержит</string>
|
||||
<string name="runExecutable">Запуск скрипта или файла</string>
|
||||
<string name="path">Путь</string>
|
||||
@ -791,7 +799,7 @@
|
||||
<string name="wifiExplanation1">Приложения, реализуемые совместимость с Android Q и выше больше не могут включать/выключать Wi-Fi. Пожалуйста, вините не меня, а Google за это.\n\nВы можете обойти это ограничение получив root права и активировав чекбокс ниже. Так же вы можете скачать это приложение из F-Droid или с моего сайта, потому что для этих версий приложения нет ограничения на совместимость с последним уровнем API.</string>
|
||||
<string name="wifiExplanation2">Когда активирован режим "В самолете" Wi-Fi может быть включен только приложениями с доступом к root правам.</string>
|
||||
<string name="usingRoot">используя root-права</string>
|
||||
<string name="runExecutableExplanation">Здесь вы можете выбрать сценарий или исполняемый файл, который будет выполняться как действие.\n\nНо есть некоторые предварительные условия, с которыми вам придется иметь дело самостоятельно. Google очень усложнил запуск чего-либо, кроме обычных приложений Android.\n\n1. Сценарий должен быть помечен как исполняемый. В обычной системе Android (без root) это на самом деле самая сложная часть.\n\n2. Это также означает, что автоматизация должна иметь возможность выполнять файл, а не только владельца или группу.\n\n3. Если это сценарий, в заголовке скрипта указывается допустимая оболочка.\n\nЕсли вы не можете выполнить вышеуказанные требования, можно в качестве альтернативы попытаться указать оболочку в качестве фактического исполняемого файла (например, /system/bin/sh) и скрипт в качестве параметра. Это сработало, по крайней мере, для одного пользователя.</string>
|
||||
<string name="runExecutableExplanation">Здесь вы можете выбрать сценарий или исполняемый файл, который будет выполняться как действие.\n\nНо есть некоторые предварительные условия, с которыми вам придется иметь дело самостоятельно. Google очень усложнил запуск чего-либо, кроме обычных приложений Android.\n\n1. Сценарий должен быть помечен как исполняемый. В обычной системе Android (без root) это сделать непросто.\n\n2. Помимо владельца или группы, разрешение на исполнение файла должно также быть и у Automation.\n\n3. Если это сценарий, в заголовке скрипта указывается допустимая оболочка.\n\nЕсли вы не можете выполнить вышеуказанные требования, можно попробовать другое решение - попытаться указать оболочку в качестве фактического исполняемого файла (например, /system/bin/sh), а скрипт в качестве параметра. Это сработало, по крайней мере, для одного пользователя.</string>
|
||||
<string name="tetheringActive">раздача интернета активна</string>
|
||||
<string name="tetheringNotActive">раздача интернета не активна</string>
|
||||
<string name="tetheringState">Раздача интернета</string>
|
||||
@ -807,7 +815,7 @@
|
||||
<string name="bluetooth">Bluetooth</string>
|
||||
<string name="subSystemState">Состояние подсистемы</string>
|
||||
<string name="clickNotificationButton">Нажмите кнопку</string>
|
||||
<string name="simplyDismissNotification">Просто уволить</string>
|
||||
<string name="simplyDismissNotification">Игнорировать сообщение</string>
|
||||
<string name="usb">USB</string>
|
||||
<string name="cable">Кабель</string>
|
||||
<string name="tetheringBluetoothNotPossible">В настоящее время модем Bluetooth не может быть обнаружен. Только другие средства связи активируют этот триггер.</string>
|
||||
@ -828,4 +836,27 @@
|
||||
<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>
|
||||
<string name="notificationAccessAndroid13">После нажатия кнопки «ОК» выберите «Автоматизация», затем выберите «Разрешить доступ к уведомлениям», затем «Разрешить».</string>
|
||||
<string name="displayLanguage">Язык интерфейса</string>
|
||||
<string name="displayLanguageSummary">Язык интерфейса</string>
|
||||
<string name="wifiMonitoringAlsoRequiresThis">Это разрешение также требуется, если триггер использует текущее соединение Wi-Fi.</string>
|
||||
<string name="copyTextToClipboard">Копирование текста в буфер обмена</string>
|
||||
<string name="textToCopy">Текст для копирования</string>
|
||||
<string name="android.permission.SYSTEM_ALERT_WINDOW">Запуск поверх других приложений</string>
|
||||
<string name="overlayPermissionHint">После нажатия кнопки «ОК» вы попадете в системный диалог. Пожалуйста, выберите там Automation и разрешите запуск поверх других приложений.</string>
|
||||
<string name="variablesOnlyForTypes">Переменные доступны только для типов параметров: String и URI</string>
|
||||
<string name="intentParametersHint">Если вы хотите указать параметр, вам также нужно нажать «Добавить пару намерений». В противном случае ваши изменения не будут сохранены.</string>
|
||||
<string name="languagePolish">Польский</string>
|
||||
<string name="languageChineseChina">Китайский (Китай)</string>
|
||||
<string name="wifiTriggerDisconnectionHint">Этот триггер будет действителен, если вы только что отключились от Wi-Fi, указанного выше, ИЛИ во время запуска службы и если вы не подключены ни к одному Wi-Fi. Если вы хотите, чтобы триггер срабатывал только тогда, когда вы явно отключаетесь от определенного Wi-Fi, добавьте еще один триггер «сервис не запускается».</string>
|
||||
<string name="className">Имя класса</string>
|
||||
<string name="startAppByStartForegroundService">no startForegroundService()</string>
|
||||
</resources>
|
||||
|
803
app/src/main/res/values-zh-rCN/strings.xml
Normal file
@ -0,0 +1,803 @@
|
||||
<resources>
|
||||
<string name="ruleActivate">激活规则 %1$s</string>
|
||||
<string name="profileActivate">激活配置文件 %1$s</string>
|
||||
<string name="ruleActivateToggle">在切换模式下激活规则 %1$s</string>
|
||||
<string name="addPoi">添加位置</string>
|
||||
<string name="addRule">添加规则</string>
|
||||
<string name="poiList">位置列表:</string>
|
||||
<string name="ruleList">规则列表:</string>
|
||||
<string name="pleaseEnterValidName">请输入有效的名字。</string>
|
||||
<string name="pleaseSpecifiyTrigger">请至少指定一个触发器。</string>
|
||||
<string name="pleaseSpecifiyAction">请至少指定一个动作。</string>
|
||||
<string name="serviceWontStart">没有定义规则。服务不会启动。</string>
|
||||
<string name="serviceStarted">Automation 服务已启动。</string>
|
||||
<string name="version">版本 %1$s。</string>
|
||||
<string name="distanceBetween">GPS 位置和网络位置之间的距离是 %1$d 米。最小半径应该是这个值+1米。</string>
|
||||
<string name="positioningWindowNotice">如果您在建筑物中,强烈建议您将设备放在窗户旁边,直到获得位置。否则即使能获得位置,也可能需要很长时间。</string>
|
||||
<string name="gettingPosition">获取位置。请稍等…</string>
|
||||
<string name="yes">是</string>
|
||||
<string name="no">否</string>
|
||||
<string name="pleaseEnterValidLatitude">请输入有效的纬度。</string>
|
||||
<string name="pleaseEnterValidLongitude">请输入有效的经度。</string>
|
||||
<string name="pleaseEnterValidRadius">请输入有效的正数半径。</string>
|
||||
<string name="selectOneDay">至少选择一天。</string>
|
||||
<string name="whatToDoWithRule">对规则做什么?</string>
|
||||
<string name="whatToDoWithPoi">对位置做什么?</string>
|
||||
<string name="whatToDoWithProfile">对情景模式做什么?</string>
|
||||
<string name="delete">删除</string>
|
||||
<string name="deleteCapital">删除</string>
|
||||
<string name="serviceStopped">Automation 服务已停止。</string>
|
||||
<string name="logServiceStopping">停止服务。</string>
|
||||
<string name="stillGettingPosition">仍在获取位置</string>
|
||||
<string name="lastRule">最后的规则:</string>
|
||||
<string name="at">在</string>
|
||||
<string name="service">服务:</string>
|
||||
<string name="getCurrentPosition">获取当前位置</string>
|
||||
<string name="savePoi">保存位置</string>
|
||||
<string name="deletePoi">删除位置</string>
|
||||
<string name="latitude">纬度</string>
|
||||
<string name="longitude">经度</string>
|
||||
<string name="ruleName">规则名称</string>
|
||||
<string name="triggers">触发器</string>
|
||||
<string name="triggersComment">用“与”连接(所有条件必须同时成立)</string>
|
||||
<string name="addTrigger">添加触发器</string>
|
||||
<string name="actions">动作</string>
|
||||
<string name="actionsComment">(将按顺序执行)</string>
|
||||
<string name="addAction">添加动作</string>
|
||||
<string name="saveRule">保存规则</string>
|
||||
<string name="monday">星期一</string>
|
||||
<string name="tuesday">星期二</string>
|
||||
<string name="wednesday">星期三</string>
|
||||
<string name="thursday">星期四</string>
|
||||
<string name="friday">星期五</string>
|
||||
<string name="saturday">星期六</string>
|
||||
<string name="sunday">星期日</string>
|
||||
<string name="start">开始</string>
|
||||
<string name="end">结束</string>
|
||||
<string name="save">保存</string>
|
||||
<string name="urlToTrigger">触发网址:</string>
|
||||
<string name="urlLegend">变量:\n您可以使用以下变量。触发后,它们将替换为您设备上的对应值。文本中要包含方括号。\n\n[uniqueid] - 您设备的唯一 ID\n[serialnr] - 您设备的序列号(< Android 9)\n[latitude] - 您设备的纬度\n[longitude] - 您设备的经度\n[phonenr] - 最后来电或去电的号码\n[d] - 日,2 位数字,带前导零\n[m] - 月,数字表示,带前导零\n[Y] - 年,完整数字表示,4 位数字\n[h] - 时,12 小时制,带前导零\n[H] - 时,24 小时制,带前导零\n[i] - 分,带前导零\n[s] - 秒,带前导零\n[ms] - 毫秒\n[notificationTitle] - 最后通知的标题\n[notificationText] - 最后通知的文本\n[variable-变量名] - 自定义变量的值</string>
|
||||
<string name="wifi">WLAN</string>
|
||||
<string name="activating">启用</string>
|
||||
<string name="deactivating">停用</string>
|
||||
<string name="bluetoothFailed">未能触发蓝牙。这个设备有蓝牙吗?</string>
|
||||
<string name="urlTooShort">网址必须至少包含 10 个字符。</string>
|
||||
<string name="enterPhoneNumberAndText">输入电话号码和短信。</string>
|
||||
<string name="selectTypeOfTrigger">选择触发器类型</string>
|
||||
<string name="entering">进入</string>
|
||||
<string name="leaving">离开</string>
|
||||
<string name="noPoisSpecified">尚未指定任何位置。请先添加位置。</string>
|
||||
<string name="started">开始</string>
|
||||
<string name="stopped">停止</string>
|
||||
<string name="connected">连接</string>
|
||||
<string name="disconnected">断开</string>
|
||||
<string name="selectPoi">选择位置</string>
|
||||
<string name="selectTypeOfAction">选择动作类型</string>
|
||||
<string name="selectSoundProfile">选择情景模式</string>
|
||||
<string name="whatToDoWithTrigger">对触发器做什么?</string>
|
||||
<string name="whatToDoWithAction">对动作做什么?</string>
|
||||
<string name="radiusHasToBePositive">半径必须是正数。</string>
|
||||
<string name="poiStillReferenced">还有引用此位置的规则 (%1$s)。现在不能删除它。</string>
|
||||
<string name="generalSettings">常规设置</string>
|
||||
<string name="startAtSystemBoot">开机时启动</string>
|
||||
<string name="onOff">开/关</string>
|
||||
<string name="writeLogFile">写入日志文件</string>
|
||||
<string name="useTextToSpeechOnNormalSummary">响铃模式时使用文字转语音</string>
|
||||
<string name="useTextToSpeechOnVibrateSummary">振动模式时使用文字转语音</string>
|
||||
<string name="useTextToSpeechOnSilentSummary">静音模式时使用文字转语音</string>
|
||||
<string name="useTextToSpeechOnNormalTitle">响铃模式 TTS</string>
|
||||
<string name="useTextToSpeechOnVibrateTitle">振动模式 TTS</string>
|
||||
<string name="useTextToSpeechOnSilentTitle">静音模式 TTS</string>
|
||||
<string name="positioningSettings">定位设置</string>
|
||||
<string name="listenToWifiState">如果可能,监听 WLAN 状态变化</string>
|
||||
<string name="wifiState">WLAN 状态</string>
|
||||
<string name="listenToAccelerometerState">WLAN 不可用时监测设备移动</string>
|
||||
<string name="accelerometer">加速度计</string>
|
||||
<string name="accelerometerTimer">手机信号塔保持不变 X 分钟后,使用加速度计</string>
|
||||
<string name="cellMastIdleTime">手机信号塔等待时间</string>
|
||||
<string name="accelerometerThresholdDescription">加速度计移动阈值</string>
|
||||
<string name="accelerometerThreshold">加速度计阈值</string>
|
||||
<string name="positioningThresholds">定位阈值</string>
|
||||
<string name="minimumDistanceChangeForGpsLocationUpdates">GPS 位置更新的最小距离变化</string>
|
||||
<string name="distanceForGpsUpdate">GPS 更新距离 [m]</string>
|
||||
<string name="minimumDistanceChangeForNetworkLocationUpdates">网络位置更新的最小距离变化</string>
|
||||
<string name="distanceForNetworkUpdate">网络更新距离 [m]</string>
|
||||
<string name="satisfactoryAccuracyGps">通过 GPS 获取位置时的精度(以米为单位)</string>
|
||||
<string name="gpsAccuracy">GPS 精度 [m]</string>
|
||||
<string name="satisfactoryAccuracyNetwork">通过手机信号塔获取位置时的精度(以米为单位)</string>
|
||||
<string name="networkAccuracy">网络位置精度 [m]</string>
|
||||
<string name="minimumTimeForLocationUpdates">位置更新的最小时间间隔(以毫秒为单位)</string>
|
||||
<string name="timeForUpdate">更新时间 [毫秒]</string>
|
||||
<string name="soundSettings">声音设置</string>
|
||||
<string name="showHelp">显示帮助</string>
|
||||
<string name="rules">规则</string>
|
||||
<string name="helpTextRules">规则中的所有触发器都是用“与”连接的。规则仅在满足所有触发器时才应用。如果您想要“或”,请创建另一个规则。\n触发器和条件是作为同义词使用的。所有的触发器都是条件,而最后一个满足其要求值的条件可以称为触发器,因为它是导致规则执行的“最后一块拼图”。</string>
|
||||
<string name="timeframes">时间范围</string>
|
||||
<string name="helpTextTimeFrame">指定时间范围规则时有两种选择。您可以选择进入或离开时间范围。无论哪种方式,规则都只会触发一次。因此,如果您创建一个使用触发器“进入时间范围 XYZ”的规则,让它将响铃模式更改为振动,这并不意味着手机会在时间范围结束时自动更改为响铃。如果想要的话,您需要指定另一个规则,使用另一个时间范围。</string>
|
||||
<string name="helpTextSound">在主屏幕上,您可以使用“锁定声音更改”来暂时禁用基于规则的声音更改。例如,您可能在通常允许响铃的情况或地点,但这一次响铃会打扰。一旦配置的时间过去,此功能将自动停用。点击 + 按钮以添加给定的时间。当此功能启用时,您可以使用切换按钮将其停用(即重新启用基于规则的声音更改)。</string>
|
||||
<string name="toggableRules">可切换规则</string>
|
||||
<string name="helpTextToggable">规则有一个称为“可切换”的设置。它的意思是执行规则后,相同触发器再次触发时,规则会以相反方式再次执行(如果适用的话)。目前这只能和 NFC 标签一起使用。如果在关联了可切换规则时触碰两次标签,就会执行与当前状态相反的操作,例如 WLAN 当前开启时将其关闭。</string>
|
||||
<string name="helpTextProcessMonitoring">如果指定了使用进程监控的规则,这个应用就会每 X 秒检查一次该进程(X 可以在设置中更改)。我知道这可能有点慢,但持续监控会很快耗尽电池电量。并且该事件没有来自操作系统的广播。</string>
|
||||
<string name="helpTitleEnergySaving">节能</string>
|
||||
<string name="helpTextEnergySaving">很多 Android 设备制造商试图通过限制应用的后台活动来节省电量。不幸的是,这通常会导致这些应用无法正常工作,Automation 就是其中之一。请看这个<a href="https://dontkillmyapp.com/">网页</a>,查找如何从这些限制中排除 Automation。</string>
|
||||
<string name="speedMaximumTimeBetweenLocations">确定速度的两个位置之间最长时间。</string>
|
||||
<string name="speedMaximumTime">时间 [分钟]</string>
|
||||
<string name="exceeds">超过</string>
|
||||
<string name="dropsBelow">低于</string>
|
||||
<string name="settingsCategoryNoiseLevelMeasurements">噪声级测量</string>
|
||||
<string name="timeBetweenNoiseLevelMeasurementsSummary">噪声级测量之间的秒数</string>
|
||||
<string name="timeBetweenNoiseLevelMeasurementsTitle">噪声级测量之间的秒数</string>
|
||||
<string name="lengthOfNoiseLevelMeasurementsSummary">每次噪声级测量的时长(以秒为单位)</string>
|
||||
<string name="lengthOfNoiseLevelMeasurementsTitle">每次噪声级测量的时长</string>
|
||||
<string name="referenceValueForNoiseLevelMeasurementsSummary">噪声级测量的物理参考值</string>
|
||||
<string name="referenceValueForNoiseLevelMeasurementsTitle">噪声测量参考</string>
|
||||
<string name="logLevelSummary">日志级别(1=最低,5=最高)</string>
|
||||
<string name="logLevelTitle">日志级别</string>
|
||||
<string name="ruleActive">启用规则</string>
|
||||
<string name="triggerPointOfInterest">位置</string>
|
||||
<string name="triggerTimeFrame">时间范围</string>
|
||||
<string name="triggerCharging">电池充电</string>
|
||||
<string name="triggerUsb_host_connection">USB 连接到电脑</string>
|
||||
<string name="triggerSpeed">速度</string>
|
||||
<string name="triggerNoiseLevel">背景噪声级</string>
|
||||
<string name="actionSetWifi">WLAN</string>
|
||||
<string name="actionSetBluetooth">蓝牙</string>
|
||||
<string name="actionSetUsbTethering">USB 网络共享</string>
|
||||
<string name="actionSetWifiTethering">WLAN 网络共享</string>
|
||||
<string name="actionSetBluetoothTethering">蓝牙网络共享</string>
|
||||
<string name="actionSetDisplayRotation">屏幕旋转</string>
|
||||
<string name="actionTurnWifiOn">打开 WLAN</string>
|
||||
<string name="actionTurnWifiOff">关闭 WLAN</string>
|
||||
<string name="actionTurnBluetoothOn">打开蓝牙</string>
|
||||
<string name="actionTurnBluetoothOff">关闭蓝牙</string>
|
||||
<string name="actionTriggerUrl">触发网址</string>
|
||||
<string name="actionChangeSoundProfile">更改情景模式</string>
|
||||
<string name="actionTurnUsbTetheringOn">打开 USB 网络共享</string>
|
||||
<string name="actionTurnUsbTetheringOff">关闭 USB 网络共享</string>
|
||||
<string name="actionTurnWifiTetheringOn">打开 WLAN 网络共享</string>
|
||||
<string name="actionTurnWifiTetheringOff">关闭 WLAN 网络共享</string>
|
||||
<string name="actionTurnBluetoothTetheringOn">打开蓝牙网络共享</string>
|
||||
<string name="actionTurnBluetoothTetheringOff">关闭蓝牙网络共享</string>
|
||||
<string name="actionTurnAirplaneModeOn">打开飞行模式</string>
|
||||
<string name="actionTurnAirplaneModeOff">关闭飞行模式</string>
|
||||
<string name="actionEnableScreenRotation">启用屏幕旋转</string>
|
||||
<string name="actionDisableScreenRotation">禁用屏幕旋转</string>
|
||||
<string name="screenRotationEnabled">屏幕旋转已启用。</string>
|
||||
<string name="screenRotationDisabled">屏幕旋转已禁用。</string>
|
||||
<string name="screenRotationAlreadyEnabled">屏幕旋转已经是启用的。</string>
|
||||
<string name="screenRotationAlreadyDisabled">屏幕旋转已经是禁用的。</string>
|
||||
<string name="noPoisDefinedShort">没有定义位置。</string>
|
||||
<string name="activePoi">活动位置:</string>
|
||||
<string name="closestPoi">最近的位置:</string>
|
||||
<string name="overview">概述</string>
|
||||
<string name="poi">位置</string>
|
||||
<string name="pois">位置</string>
|
||||
<string name="helpTextPoi">位置由 GPS 坐标和半径组成。因为手机信号塔定位很不精确(但快速、省电),所以不要将半径指定得太小。创建新位置时,此应用会给出建议的最小半径。</string>
|
||||
<string name="serviceNotRunning">服务未运行。</string>
|
||||
<string name="general">常规</string>
|
||||
<string name="generalText">要使用此程序,您必须设置规则。规则包含触发器,例如到达指定区域或进入某个时间。完成后点击主屏幕上的开/关按钮。</string>
|
||||
<string name="failedToTriggerBluetooth">未能触发蓝牙。这个设备有蓝牙吗?</string>
|
||||
<string name="startServiceAfterAppUpdate">应用更新后自动启动服务(如果之前是运行的)。</string>
|
||||
<string name="startServiceAfterAppUpdateShort">更新后启动服务</string>
|
||||
<string name="wifiConnection">WLAN 连接</string>
|
||||
<string name="wifiName">WLAN 名称</string>
|
||||
<string name="enterWifiName">输入 WLAN 名称。留空表示任何 WLAN。</string>
|
||||
<string name="cancel">取消</string>
|
||||
<string name="starting">开始</string>
|
||||
<string name="stopping">停止</string>
|
||||
<string name="connecting">连接</string>
|
||||
<string name="disconnecting">断开</string>
|
||||
<string name="exceeding">超过</string>
|
||||
<string name="droppingBelow">低于</string>
|
||||
<string name="connectedToWifi">连接到 WLAN \"%1$s\"</string>
|
||||
<string name="disconnectedFromWifi">与 WLAN \"%1$s\" 断开连接</string>
|
||||
<string name="anyWifi">任何 WLAN</string>
|
||||
<string name="cantStopIt">无法停止。</string>
|
||||
<string name="settingsCategoryHttp">HTTP(s) 请求</string>
|
||||
<string name="httpAcceptAllCertificatesTitle">接受所有证书</string>
|
||||
<string name="httpAcceptAllCertificatesSummary">跳过 SSL 证书的有效性检查(不建议启用)</string>
|
||||
<string name="httpAttemptsSummary">HTTP 请求因连接原因失败时的尝试次数</string>
|
||||
<string name="httpAttemptsTitle">HTTP 尝试次数</string>
|
||||
<string name="httpAttemptsTimeoutSummary">HTTP 请求超时 [秒]</string>
|
||||
<string name="httpAttemptsTimeoutTitle">超时 [秒]</string>
|
||||
<string name="httpAttemptGapSummary">下一次尝试之前暂停 [秒]</string>
|
||||
<string name="httpAttemptGapTitle">暂停 [秒]</string>
|
||||
<string name="runManually">手动运行</string>
|
||||
<string name="serviceHasToRunForThat">必须运行服务,才能执行此操作。</string>
|
||||
<string name="gpsComparison">GPS 比较</string>
|
||||
<string name="timeoutForGpsComparisonsTitle">GPS 超时 [秒]</string>
|
||||
<string name="timeoutForGpsComparisonsSummary">尝试获取 GPS 位置进行比较的最长时间(以秒为单位)。如果超时就会应用最后已知的位置。</string>
|
||||
<string name="rememberLastActivePoiSummary">如果您在某个位置,重启设备或此应用时离开该位置,此应用将在下次启动时运行离开该位置相关的规则。</string>
|
||||
<string name="rememberLastActivePoiTitle">记住最后活动位置</string>
|
||||
<string name="muteTextToSpeechDuringCallsTitle">通话时静音</string>
|
||||
<string name="muteTextToSpeechDuringCallsSummary">通话时将文字转语音静音</string>
|
||||
<string name="anotherPoiByThatName">已经有另一个同名的位置。</string>
|
||||
<string name="anotherRuleByThatName">已经有另一个同名的规则。</string>
|
||||
<string name="startOtherActivity">启动另一个程序</string>
|
||||
<string name="selectApplication">选择应用</string>
|
||||
<string name="selectPackageOfApplication">选择软件包</string>
|
||||
<string name="selectActivityToBeStarted">选择所选软件包的活动</string>
|
||||
<string name="errorStartingOtherActivity">启动其他活动时出错</string>
|
||||
<string name="anotherAppIsRunning">另一个应用启动/停止</string>
|
||||
<string name="settingsCategoryProcessMonitoring">进程监控</string>
|
||||
<string name="timeBetweenProcessMonitoringsTitle">进程监控之间的秒数</string>
|
||||
<string name="timeBetweenProcessMonitoringsSummary">值越低,电池用量越高</string>
|
||||
<string name="processes">进程</string>
|
||||
<string name="processMonitoring">进程监控</string>
|
||||
<string name="settings">设置</string>
|
||||
<string name="settingsErased">设置已删除。</string>
|
||||
<string name="settingsSetToDefault">设置为默认值。</string>
|
||||
<string name="batteryLevel">电池电量</string>
|
||||
<string name="selectSpeed">选择速度</string>
|
||||
<string name="selectBattery">选择电池电量</string>
|
||||
<string name="privacy">隐私政策</string>
|
||||
<string name="privacyConfirmationText">现在将在您的设备上打开浏览器,从开发者的网站加载隐私政策。</string>
|
||||
<string name="waitBeforeNextAction">下个动作前等待</string>
|
||||
<string name="wakeupDevice">唤醒设备</string>
|
||||
<string name="waitBeforeNextActionEnterValue">输入下个动作之前等待的时间(以毫秒为单位)。</string>
|
||||
<string name="wakeupDeviceValue">输入设备保持唤醒的最短时间(以毫秒为单位)。0 表示默认值。</string>
|
||||
<string name="enterAPositiveValidNonDecimalNumber">输入一个有效的正整数。</string>
|
||||
<string name="moveUp">向上移动</string>
|
||||
<string name="moveDown">向下移动</string>
|
||||
<string name="cantMoveUp">无法向上移动项目。它已经在顶部了。</string>
|
||||
<string name="cantMoveDown">无法向下移动项目。它已经在底部了。</string>
|
||||
<string name="airplaneMode">飞行模式</string>
|
||||
<string name="activate">启用</string>
|
||||
<string name="deactivate">停用</string>
|
||||
<string name="airplaneModeSdk17Warning">从 Android 4.2 版本开始,此功能仅在您的设备已获得 root 权限时才有效。</string>
|
||||
<string name="addIntentValue">添加 Intent 对</string>
|
||||
<string name="parameterName">参数名称</string>
|
||||
<string name="parameterValue">参数值</string>
|
||||
<string name="parameterType">参数类型</string>
|
||||
<string name="selectTypeOfIntentPair">选择 Intent 对的类型。</string>
|
||||
<string name="enterNameForIntentPair">输入 Intent 对的名称。</string>
|
||||
<string name="enterValueForIntentPair">输入 Intent 对的值。</string>
|
||||
<string name="whatToDoWithIntentPair">对 Intent 对做什么?</string>
|
||||
<string name="gettingListOfInstalledApplications">正在获取已安装应用列表…</string>
|
||||
<string name="timeFrameWhichDays">在星期几?</string>
|
||||
<string name="insideOrOutsideTimeFrames">时间范围之内还是之外?</string>
|
||||
<string name="selectToggleDirection">打开还是关闭?</string>
|
||||
<string name="name">名称</string>
|
||||
<string name="radiusWithUnit">半径 [米]</string>
|
||||
<string name="status">状态</string>
|
||||
<string name="actionDataConnection">移动数据连接</string>
|
||||
<string name="actionSetDataConnectionOn">打开移动数据</string>
|
||||
<string name="actionSetDataConnectionOff">关闭移动数据</string>
|
||||
<string name="roaming">漫游</string>
|
||||
<string name="activated">启用</string>
|
||||
<string name="deactivated">停用</string>
|
||||
<string name="until">到</string>
|
||||
<string name="application">应用</string>
|
||||
<string name="is">已</string>
|
||||
<string name="phoneCall">通话</string>
|
||||
<string name="with">和</string>
|
||||
<string name="phoneNumber">电话号码</string>
|
||||
<string name="enterPhoneNumberBlankForAny">输入电话号码。留空表示任何号码。</string>
|
||||
<string name="enterPhoneNumber">输入电话号码。</string>
|
||||
<string name="phoneDirection">选择通话\n方向</string>
|
||||
<string name="any">任何</string>
|
||||
<string name="incoming">来电</string>
|
||||
<string name="outgoing">去电</string>
|
||||
<string name="incomingAdjective">来电</string>
|
||||
<string name="outgoingAdjective">去电</string>
|
||||
<string name="anyNumber">任何号码</string>
|
||||
<string name="number">号码</string>
|
||||
<string name="nfcTag">NFC 标签</string>
|
||||
<string name="closeTo">接近</string>
|
||||
<string name="withLabel">ID 为</string>
|
||||
<string name="deviceDoesNotHaveNfc">这个设备似乎没有 NFC。</string>
|
||||
<string name="nfcReadTag">从标签中读取 ID</string>
|
||||
<string name="nfcWriteTag">写入标签</string>
|
||||
<string name="nfcEnterValidIdentifier">输入有效的标签标识符(如“家门”)。</string>
|
||||
<string name="nfcTagWrittenSuccessfully">标记写入成功。</string>
|
||||
<string name="nfcTagWriteError">写入标签时出错。标签在范围内吗?</string>
|
||||
<string name="nfcTagDiscovered">发现标签。</string>
|
||||
<string name="nfcBringTagIntoRange">请将 NFC 标签置于范围内。</string>
|
||||
<string name="nfcTagFoundWithText">找到标签,文本为:</string>
|
||||
<string name="nfcUnsupportedEncoding">不支持的编码:</string>
|
||||
<string name="nfcNoNdefIntentBut">没有 NFC NDEF Intent,但是</string>
|
||||
<string name="nfcNotSupportedInThisAndroidVersionYet">此 Android 版本尚不支持 NFC。</string>
|
||||
<string name="cantRunRule">无法运行规则。</string>
|
||||
<string name="nfcApplyTagToRule">将标签应用到规则</string>
|
||||
<string name="nfcTagReadSuccessfully">标签读取成功。</string>
|
||||
<string name="nfcValueNotSuitable">存储的值不适合。</string>
|
||||
<string name="nfcNoTag">没有标签。</string>
|
||||
<string name="newNfcId">写入新的 NFC ID</string>
|
||||
<string name="useExistingTag">使用现有的 NFC 标签</string>
|
||||
<string name="newId">新 ID:</string>
|
||||
<string name="currentId">当前 ID:</string>
|
||||
<string name="nfcTagDataNotUsable">标签数据不可用,请重新写入。</string>
|
||||
<string name="nfcBringTagIntoRangeToRead">请将标签置于读取范围内。</string>
|
||||
<string name="toggleRule">切换规则</string>
|
||||
<string name="toggling">切换</string>
|
||||
<string name="toggle">切换</string>
|
||||
<string name="overlapBetweenPois">检测到与位置 %1$s 重叠了 %2$s 米。请至少将半径减少该值。</string>
|
||||
<string name="none">无</string>
|
||||
<string name="anyLocation">任何位置</string>
|
||||
<string name="invalidPoiName">位置名称无效。</string>
|
||||
<string name="eraseSettings">清除设置</string>
|
||||
<string name="defaultSettings">默认设置</string>
|
||||
<string name="areYouSure">你确定吗?</string>
|
||||
<string name="activityDetection">活动检测</string>
|
||||
<string name="android.permission.ACTIVITY_RECOGNITION">活动检测</string>
|
||||
<string name="detectedActivity">检测到的活动:</string>
|
||||
<string name="detectedActivityInVehicle">在车辆中(汽车/公共汽车)</string>
|
||||
<string name="detectedActivityOnBicycle">在自行车上</string>
|
||||
<string name="detectedActivityOnFoot">步行或跑步</string>
|
||||
<string name="detectedActivityStill">静止</string>
|
||||
<string name="detectedActivityUnknown">未知</string>
|
||||
<string name="detectedActivityTilting">倾斜</string>
|
||||
<string name="detectedActivityWalking">步行</string>
|
||||
<string name="detectedActivityRunning">跑步</string>
|
||||
<string name="detectedActivityInvalidStatus">无效活动</string>
|
||||
<string name="selectTypeOfActivity">选择活动类型</string>
|
||||
<string name="triggerOnlyAvailableIfPlayServicesInstalled">此触发器仅在已安装 Google Play 服务时可用。</string>
|
||||
<string name="activityDetectionFrequencyTitle">活动检测频率 [秒]</string>
|
||||
<string name="activityDetectionFrequencySummary">尝试检测活动之间的秒数。</string>
|
||||
<string name="activityDetectionRequiredProbabilityTitle">活动检测概率</string>
|
||||
<string name="activityDetectionRequiredProbabilitySummary">达到此概率时,活动被接受为确定发生。</string>
|
||||
<string name="incomingCallFrom">来自 %1$s 的来电。</string>
|
||||
<string name="outgoingCallTo">去电至 %1$s。</string>
|
||||
<string name="actionSpeakText">朗读文字</string>
|
||||
<string name="textToSpeak">要朗读的文字</string>
|
||||
<string name="toggleNotAllowed">目前仅允许切换有 NFC 标签触发器的规则。请参阅帮助以获取更多信息。</string>
|
||||
<string name="errorReadingPoisAndRulesFromFile">从文件中读取位置和规则时出错。</string>
|
||||
<string name="noDataChangedReadingAnyway">似乎没有保存过数据更改。但内存中可能有更改需要回滚。正在重新读取文件。</string>
|
||||
<string name="bluetoothConnection">蓝牙连接</string>
|
||||
<string name="bluetoothConnectionTo">蓝牙连接到 %1$s</string>
|
||||
<string name="bluetoothDisconnectFrom">与 %1$s 断开蓝牙连接</string>
|
||||
<string name="bluetoothDeviceInRange">蓝牙设备 %1$s 在范围内。</string>
|
||||
<string name="bluetoothDeviceOutOfRange">蓝牙设备 %1$s 不在范围内。</string>
|
||||
<string name="anyDevice">任何设备</string>
|
||||
<string name="noDevice">无设备</string>
|
||||
<string name="selectDeviceFromList">列表中的一个</string>
|
||||
<string name="connectionToDevice">连接到设备</string>
|
||||
<string name="disconnectionFromDevice">与设备断开连接</string>
|
||||
<string name="deviceInRange">设备在范围内</string>
|
||||
<string name="deviceOutOfRange">设备不在范围内</string>
|
||||
<string name="selectDeviceOption">选择设备选项。</string>
|
||||
<string name="selectConnectionOption">选择连接选项。</string>
|
||||
<string name="triggerHeadsetPlugged">耳机连接</string>
|
||||
<string name="actionPlayMusic">打开音乐播放器</string>
|
||||
<string name="headsetConnected">耳机(类型:%1$s)已连接</string>
|
||||
<string name="headsetDisconnected">耳机(类型:%1$s)已断开连接</string>
|
||||
<string name="headphoneSimple">无麦克风</string>
|
||||
<string name="headphoneMicrophone">有麦克风</string>
|
||||
<string name="headphoneAny">均可</string>
|
||||
<string name="headphoneSelectType">选择耳机类型</string>
|
||||
<string name="whatsThis">这是什么?</string>
|
||||
<string name="privacyLocationingTitle">仅私人定位</string>
|
||||
<string name="privacyLocationingSummary">避免可能会将您的位置发送给提供商(如 Google)的定位方法。这将仅使用 GPS,所以可能较慢或不够可靠。</string>
|
||||
<string name="noiseDetectionHint">如果您认为噪声检测不正确(根据您指定的值),请注意每部手机都有差别。所以您可以在设置中更改“噪声测量参考”。更多信息请参阅 https://zh.wikipedia.org/wiki/分贝 。您可以使用主屏幕上的音量校准器来校准您的设备。</string>
|
||||
<string name="hint">提示</string>
|
||||
<string name="selectNoiseLevel">选择噪声级</string>
|
||||
<string name="showOnMap">在地图上显示</string>
|
||||
<string name="noMapsApplicationFound">在您的设备上找不到地图应用。</string>
|
||||
<string name="locationEngineNotActive">定位未激活。</string>
|
||||
<string name="addProfile">添加情景模式</string>
|
||||
<string name="profile">情景模式</string>
|
||||
<string name="soundMode">声音模式</string>
|
||||
<string name="volumes">音量</string>
|
||||
<string name="incomingCallsRingtone">来电提示音</string>
|
||||
<string name="notificationRingtone">通知提示音</string>
|
||||
<string name="hapticFeedback">触感反馈(触摸屏幕时振动)</string>
|
||||
<string name="volumeMusicVideoGameMedia">音乐、视频、游戏等媒体</string>
|
||||
<string name="volumeRingtoneNotifications">铃声和通知</string>
|
||||
<string name="volumeAlarms">闹钟</string>
|
||||
<string name="change">更改</string>
|
||||
<string name="audibleSelection">触摸提示音(进行屏幕选择时的声音)</string>
|
||||
<string name="screenLockUnlockSound">屏幕锁定/解锁提示音</string>
|
||||
<string name="vibrateWhenRinging">响铃时振动</string>
|
||||
<string name="profiles">情景</string>
|
||||
<string name="soundModeNormal">正常</string>
|
||||
<string name="soundModeVibrate">振动</string>
|
||||
<string name="soundModeSilent">静音</string>
|
||||
<string name="enterAname">输入名称。</string>
|
||||
<string name="noChangeSelectedProfileDoesntMakeSense">未选择更改。情景模式没有意义。</string>
|
||||
<string name="noProfilesCreateOneFirst">您的配置中没有情景模式。请先创建一个。</string>
|
||||
<string name="errorActivatingProfile">激活情景模式时出错:</string>
|
||||
<string name="anotherProfileByThatName">已经有另一个同名的情景模式。</string>
|
||||
<string name="invalidProfileName">情景模式名称无效。</string>
|
||||
<string name="errorWritingFile">写入设置文件时出错。</string>
|
||||
<string name="unknownError">未知错误。</string>
|
||||
<string name="noWritableFolderFound">找不到可写目录,无法保存配置文件。</string>
|
||||
<string name="usbTetheringFailForAboveGingerbread">这很可能不起作用,因为您使用的是 Android 2.3 以上版本。您可以改用 WLAN 网络共享。</string>
|
||||
<string name="usingNewThreadForRuleExecution">使用新线程激活规则。</string>
|
||||
<string name="startNewThreadForRuleExecution">启动新线程激活规则。</string>
|
||||
<string name="newThreadRules">新线程</string>
|
||||
<string name="showIcon">显示图标</string>
|
||||
<string name="showIconWhenServiceIsRunning">服务运行时显示图标(隐藏仅在 Android 7 以下有效)。如果您使用的是更高版本,请转到系统设置 - Automation - 通知,禁用“Service notification”。</string>
|
||||
<string name="ruleHistory">规则历史(最近的在前):</string>
|
||||
<string name="someOptionsNotAvailableYet">部分选项已禁用,它们目前还无法使用。它们将在以后的程序版本中加入。</string>
|
||||
<string name="lockSoundChanges">锁定声音更改</string>
|
||||
<string name="noProfileChangeSoundLocked">情景模式将不会激活。最后激活的情景模式已被锁定。</string>
|
||||
<string name="currentVolume">当前音量</string>
|
||||
<string name="enterValidReferenceValue">输入有效的参考值。</string>
|
||||
<string name="volumeTest">音量校准</string>
|
||||
<string name="volumeCalibrationExplanation">要计算噪声监测的分贝值,您需要指定一个所谓的物理参考值。请阅读维基百科以获取更多信息。每个手机的参考值很可能是不同的。调整拖动条以更改设定的物理参考值。参考值越高,分贝值越低。将持续每 %1$s 秒执行一次测量,结果显示在下方。找到合适的值后按返回键。</string>
|
||||
<string name="settingsWillTakeTime">部分设置将在某些环境设置更改或服务重新启动后应用。</string>
|
||||
<string name="rootExplanation">您需要 root 手机才能使用此功能。之后您需要“手动运行规则”来显示超级用户权限提示。出现超级用户弹窗时,您需要始终允许应用执行此操作。否则,手机无人值守时规则将无法生效。</string>
|
||||
<string name="errorWritingConfig">写入配置时出错。有可写存储吗?</string>
|
||||
<string name="phoneNrReplacementError">无法在变量中插入最后一个电话号码。未找到号码。</string>
|
||||
<string name="username">用户名</string>
|
||||
<string name="password">密码</string>
|
||||
<string name="useAuthentication">使用身份验证</string>
|
||||
<string name="permissionsTitle">所需权限</string>
|
||||
<string name="permissionsExplanation">所需权限的说明</string>
|
||||
<string name="ok">确定</string>
|
||||
<string name="disabledFeatures">禁用的功能</string>
|
||||
<string name="theFollowingPermissionsHaveBeenDenied">以下权限已被拒绝:</string>
|
||||
<string name="permissionsExplanationGeneric">该应用当前以受限模式运行,已停用部分功能。完整运行需要权限。如果您想使用所有功能,必须在以下权限对话框中授予权限,否则某些规则将无法执行。下面给出了所需权限的解释。准备好后请点击“继续”。</string>
|
||||
<string name="permissionsExplanationSmall">要启用您正尝试使用的功能,需要更多权限。点击继续请求权限。</string>
|
||||
<string name="continueText">继续</string>
|
||||
<string name="rule">规则</string>
|
||||
<string name="storeSettings">读取和保存设置</string>
|
||||
<string name="featuresDisabled">警告:功能已禁用,Automation 以受限模式运行。点击这里查看更多信息。</string>
|
||||
<string name="ruleLegend">绿 = 启用,红 = 禁用,黄 = 权限不足</string>
|
||||
<string name="systemSettingsNote1">需要修改系统设置的权限(即使简单的设置,如打开蓝牙或 WLAN,也需要权限)。点击“继续”后,将弹出一个窗口,您需要对 Automation 启用此权限。然后按返回键。</string>
|
||||
<string name="systemSettingsNote2">之后将在下一个对话框中请求其他权限。</string>
|
||||
<string name="appRequiresPermissiontoAccessExternalStorage">Automation 需要访问外部存储以读取设置和规则。</string>
|
||||
<string name="mainScreenPermissionNote">Automation 需要更多权限才能完整运行。点击此文本以了解更多信息并请求权限。</string>
|
||||
<string name="invalidDevice">无效设备</string>
|
||||
<string name="logFileMaxSizeSummary">最大日志文件大小(以兆字节为单位)。超出后会轮替。</string>
|
||||
<string name="logFileMaxSizeTitle">最大日志文件大小 [Mb]</string>
|
||||
<string name="android.permission.READ_CALL_LOG">读取通话记录</string>
|
||||
<string name="android.permission.READ_CALENDAR">读取日历条目</string>
|
||||
<string name="android.permission.ACCESS_FINE_LOCATION">获取确切位置</string>
|
||||
<string name="android.permission.ACCESS_COARSE_LOCATION">获取粗略位置</string>
|
||||
<string name="readLocation">获取位置</string>
|
||||
<string name="android.permission.INTERNET">通过网络连接发送数据</string>
|
||||
<string name="android.permission.ACCESS_NETWORK_STATE">读取设备的网络状态</string>
|
||||
<string name="android.permission.ACCESS_WIFI_STATE">读取设备的 WLAN 状态</string>
|
||||
<string name="android.permission.BLUETOOTH">更改蓝牙设置</string>
|
||||
<string name="android.permission.BLUETOOTH_ADMIN">更改蓝牙设置</string>
|
||||
<string name="android.permission.NFC">使用 NFC 模块</string>
|
||||
<string name="android.permission.VIBRATE">让手机振动</string>
|
||||
<string name="android.permission.WAKE_LOCK">保持手机唤醒</string>
|
||||
<string name="android.permission.MODIFY_AUDIO_SETTINGS">更改音频设置</string>
|
||||
<string name="android.permission.RECORD_AUDIO">录制音频</string>
|
||||
<string name="android.permission.PROCESS_OUTGOING_CALLS">检测拨出电话</string>
|
||||
<string name="android.permission.MODIFY_PHONE_STATE">更改设备设置</string>
|
||||
<string name="android.permission.READ_PHONE_STATE">检测手机状态</string>
|
||||
<string name="android.permission.READ_EXTERNAL_STORAGE">读取存储</string>
|
||||
<string name="android.permission.WRITE_EXTERNAL_STORAGE">写入存储</string>
|
||||
<string name="android.permission.GET_TASKS">检测正在运行的进程</string>
|
||||
<string name="android.permission.WRITE_SETTINGS">更改设备设置</string>
|
||||
<string name="android.permission.RECEIVE_BOOT_COMPLETED">检测设备重启</string>
|
||||
<string name="android.permission.WRITE_SECURE_SETTINGS">更改设备设置</string>
|
||||
<string name="android.permission.BATTERY_STATS">读取电池状态</string>
|
||||
<string name="android.permission.CHANGE_BACKGROUND_DATA_SETTING">更改数据连接</string>
|
||||
<string name="android.permission.SEND_SMS">发送短信</string>
|
||||
<string name="android.permission.READ_CONTACTS">读取联系人数据</string>
|
||||
<string name="android.permission.ACCESS_NOTIFICATION_POLICY">覆盖请勿打扰设置</string>
|
||||
<string name="theseAreThePermissionsRequired">需要这些权限:</string>
|
||||
<string name="ruleXrequiresThis">规则“%1$s”需要这个。</string>
|
||||
<string name="profileXrequiresThis">情景模式“%1$s”需要这个。</string>
|
||||
<string name="helpTextActivityDetection">此功能可以检测您当前是否在旅途中,以及是否步行或乘坐哪种车辆(在一定程度上)。此功能并非 Automation 完全内置,而是由 Google Play 服务提供。技术上它不会给出是/否结果,而是会返回一个百分比,代表对状态检测的确定程度。您可以设置 Automation 会接受结果的百分比值。两点说明:1) 可能同时出现多种状态。例如,您可能在行驶的公共汽车内行走。2) 这种传感器相对耗电。如果可能,您可以考虑使用替代方案,例如要求连接到汽车的免提设备以检测您正在驾驶。</string>
|
||||
<string name="sendTextMessage">发送短信</string>
|
||||
<string name="textToSend">要发送的文本</string>
|
||||
<string name="textMessageAnnotations">您可以直接输入电话号码,或者使用通讯录选项选择一个。但请注意:这里保存的是号码,而不是联系人。如果您更改了所选联系人的电话号码,则需要更新此规则。它不会自动更新。</string>
|
||||
<string name="importNumberFromContacts">从通讯录导入号码</string>
|
||||
<string name="android9RecordAudioNotice">如果您正在使用噪声级触发器:不幸的是,从 Android 9 (Pie) 开始,Google 决定禁止后台应用使用麦克风。所以这个触发器不再有效,无法触发任何规则。</string>
|
||||
<string name="android10WifiToggleNotice">不幸的是,Google 决定在 Android 10 中删除此功能,不再允许常规应用打开或关闭 WLAN。只有当您的设备已获得 root 权限时,它才能继续工作,否则恐怕就没有效果了。</string>
|
||||
<string name="messageNotShownAgain">此消息不会再次显示。</string>
|
||||
<string name="chooseActivityHint">在最后一个选择窗口中,您需要选择一个特定的活动。简而言之,这就像所选应用程序的特定窗口。如果您不知道选哪一个,通常最好选择名称中包含“main”或“launcher”的一个。</string>
|
||||
<string name="edit">编辑</string>
|
||||
<string name="clickAndHoldForOptions">点击并按住项目以获取选项。</string>
|
||||
<string name="positioningEngine">定位引擎</string>
|
||||
<string name="googleSarcasm">感谢 Google 的无限智慧和保护所有人隐私的不懈努力(讽刺),所有可能用于发送短信或读取手机状态的触发器和操作都被删除了,因为 Google 认为它们有风险。</string>
|
||||
<string name="startAutomationAsService">启动 Automation 服务</string>
|
||||
<string name="setScreenBrightness">设置屏幕亮度</string>
|
||||
<string name="setScreenBrightnessEnterValue">输入所需的亮度(从 0 到 100)。</string>
|
||||
<string name="autoBrightness">启用自动亮度</string>
|
||||
<string name="apply">应用</string>
|
||||
<string name="brightnessAuto">自动亮度</string>
|
||||
<string name="brightnessManual">手动亮度</string>
|
||||
<string name="autoBrightnessNotice">如果使用自动亮度,下面设置的亮度值可能不会应用很长时间。</string>
|
||||
<string name="screenLockSoundNotice">在运行 Android 6.0 或更高版本的设备上,屏幕锁定声音无法再自动更改。无论此处如何设置,都不会以任何方式起作用。</string>
|
||||
<string name="startScreen">启动屏幕</string>
|
||||
<string name="startScreenSummary">选择启动应用时打开的屏幕。</string>
|
||||
<string name="executeRulesAndProfilesWithSingleClickTitle">单击运行规则/配置文件。</string>
|
||||
<string name="googleLocationChicanery">为支持基于位置的规则和速度检测,本应用会收集位置数据,即使在关闭或未使用状态下也仍会持续收集。</string>
|
||||
<string name="googleLocationChicaneryOld">此应用收集位置数据,以确定您当前是否位于您创建的位置之一。此外,如果您在规则中使用速度触发器,它还用于确定您当前的速度。即使在关闭或未使用状态下(仅当服务激活时),也仍会持续收集。</string>
|
||||
<string name="android.permission.ACCESS_BACKGROUND_LOCATION">在后台获取位置。</string>
|
||||
<string name="deviceDoesNotHaveBluetooth">该设备似乎没有蓝牙。您仍然可以继续配置,但它很可能没有效果。</string>
|
||||
<string name="manageLocations">创建或编辑位置</string>
|
||||
<string name="error">错误</string>
|
||||
<string name="featureNotInFdroidVersion">此功能基于非自由软件,因此在 F-Droid 版本中不可用。</string>
|
||||
<string name="settingsReferringToRestrictedFeaturesInFdroid">您的设置和/或规则目前正在使用 F-Droid 版本中无法提供的非自由软件功能。这包括检测您当前的身体活动。</string>
|
||||
<string name="settingsReferringToRestrictedFeaturesInGoogle">您的设置和/或规则目前正在使用 Google Play 版本中无法提供的功能。其中包括与电话和短信相关的任何功能。</string>
|
||||
<string name="publishedOn">发布于</string>
|
||||
<string name="displayNewsOnMainScreen">在主屏幕上显示应用新闻</string>
|
||||
<string name="displayNewsOnMainScreenDescription">仅是关于此应用的公告,大概每年 1-2 条,不会更多。</string>
|
||||
<string name="filesHaveBeenMovedTo">Automation 现在使用另一个路径来保存您的文件。您所有的 Automation 文件都已移至此处:“%s”。不再需要外部存储权限;您可以撤销它。它将在未来的版本中被删除。</string>
|
||||
<string name="locationDisabled">位置已禁用</string>
|
||||
<string name="locationEngineDisabledShort">无法继续在后台确定位置。点击此处了解原因。</string>
|
||||
<string name="locationEngineDisabledLong">不幸的是,无法继续确定您的位置。感谢谷歌的无限智慧与和蔼可亲。\\n\\n让我进一步解释一下。Android 10 开始引入了一项新权限,需要这个权限才能在后台确定您的位置(当然对于本应用是必需的)。虽然我认为这总体上是个好主意,但它给开发人员带来的骚扰却并非如此。\\n\\n开发应用时,可以通过遵守一组要求来尝试获得此权限。不幸的是,我的应用的新版本在三个月内不断被拒绝。我满足了所有的要求,Google 糟糕的开发支持却声称我没有。在向他们证明我确实做到了之后——我得到的回应是“我不能再帮助你了”。最后我放弃了。\\n\\n因此,Google Play 版本无法再使用您的位置作为触发器。我唯一的其他选择是将此应用从商店中完全删除。\\n\\n非常抱歉,但我已尽我所能与没有帮助的“支持”争论了。\\n\\n好消息:您仍然可以使用这个功能!\\n\\nAutomation 现在是开源的,可以在 F-Droid 中找到。这是一个真正关心您的隐私的应用商店——而不仅仅是表现地像这样。只需备份您的配置文件,卸载此应用,从 F-Droid 重新安装它,恢复您的配置文件即可。\\n\\n点击此处了解更多信息:</string>
|
||||
<string name="filesStoredAt">配置和日志文件保存在文件夹 %1$s 中。点击此文本以打开文件管理器。不幸的是,这只适用于有 root 权限的设备。对于所有其他设备:只需使用导出按钮进行备份。</string>
|
||||
<string name="notification">通知</string>
|
||||
<string name="title">标题</string>
|
||||
<string name="text">文本</string>
|
||||
<string name="directionStringEquals">等于</string>
|
||||
<string name="directionStringContains">包含</string>
|
||||
<string name="directionStringStartsWith">开头是</string>
|
||||
<string name="directionStringEndsWith">结尾是</string>
|
||||
<string name="directionStringNotEquals">不等于</string>
|
||||
<string name="anyApp">任何应用</string>
|
||||
<string name="notificationTriggerExplanation">此触发器将响应其他应用在通知区域打开(或关闭)通知。您可以指定通知必须来自的另一个应用。如果不指定,则来自任何其他应用的通知都会触发。您还可以指定标题或通知正文中必须有或没有的字符串。比较不区分大小写。</string>
|
||||
<string name="postsNotification">%1$s 发布通知</string>
|
||||
<string name="removedNotification">来自 %1$s 的通知已删除</string>
|
||||
<string name="notificationAppears">通知出现</string>
|
||||
<string name="notificationDisappears">通知消失</string>
|
||||
<string name="direction">方向</string>
|
||||
<string name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">读取系统通知</string>
|
||||
<string name="playSound">播放声音</string>
|
||||
<string name="alwaysPlay">始终播放</string>
|
||||
<string name="alwaysPlayExplanation">如果启用此设置,则始终播放声音。如果停用,则仅当手机未处于静音或振动状态时播放。但启用时不会更改音量,例如手机在响铃模式时,媒体音量也不会自动增加。因此,如果媒体音量处于静音状态,您也不会听到声音。</string>
|
||||
<string name="selectSoundFile">选择声音文件</string>
|
||||
<string name="fileDoesNotExist">文件不存在。</string>
|
||||
<string name="noFileManageInstalled">没有安装文件管理器。</string>
|
||||
<string name="shareConfigAndLogFilesWithDev">附加配置和日志文件。</string>
|
||||
<string name="shareConfigAndLogExplanation">这将开始写一封新电子邮件,以配置和日志文件作为 zip 附件。它不会自动发送,您仍然需要点击“发送”。比如您也可以将收件人更改为您自己。</string>
|
||||
<string name="startAppChoiceNote">这里有 2 个常规选项:\n\n1. 您可以通过选择活动来启动程序。这就像预先选择应用的特定屏幕/窗口。注意这可能并不总是有效,因为应用的窗口可能会相互交互,如传递参数。直接启动一个没有交互过的特定屏幕时,窗口可能会立即关闭(所以它不会真的显示)。还是试试吧!您可以手动输入活动路径,但建议使用“选择”按钮。若要手动输入,请在上方字段中输入应用包名,在下方字段中输入活动的完整路径。\n\n2. 按动作选择:除选择特定窗口外,您还可以按动作启动程序。这就像大喊“我想要 xyz”,如果安装了支持的应用,它就会启动。典型的例子是启动浏览器——您可能安装了多个浏览器(通常有一个是默认的)。这里您需要手动输入,包名是可选的。注意不会解析变量。例如,如果想启动相机,使用“MediaStore.ACTION_IMAGE_CAPTURE”是不行的。您必须查看 Android 文档并使用此变量的实际值来代替,在本例中为“android.media.action.IMAGE_CAPTURE”。</string>
|
||||
<string name="errorRunningRule">运行规则时出错。</string>
|
||||
<string name="cantFindSoundFile">找不到声音文件 %1$s,无法播放。</string>
|
||||
<string name="addParameters">添加参数</string>
|
||||
<string name="com.wireguard.android.permission.CONTROL_TUNNELS">控制 WireGuard 应用的隧道</string>
|
||||
<string name="startAppSelectionType">选择应用\n的方法</string>
|
||||
<string name="startAppByActivity">按活动</string>
|
||||
<string name="startAppByAction">按动作</string>
|
||||
<string name="enterValidAction">输入有效的动作</string>
|
||||
<string name="enterPackageName">输入有效的包名。</string>
|
||||
<string name="state">状态</string>
|
||||
<string name="phoneNumberExplanation">您可以输入特定的远程电话号码,但不是必填的。若要指定一个号码,可以从通讯录中选择或手动输入。此外,还可以使用正则表达式。要测试正则表达式,建议使用这个页面:</string>
|
||||
<string name="importConfiguration">导入配置</string>
|
||||
<string name="exportConfiguration">导出配置</string>
|
||||
<string name="moreSettings">更多设置</string>
|
||||
<string name="configurationExportedSuccessfully">配置导出成功。</string>
|
||||
<string name="ConfigurationExportError">导出配置时出错。</string>
|
||||
<string name="rulesImportedSuccessfully">规则和位置导入成功。</string>
|
||||
<string name="rulesImportError">导入规则和位置时出错。</string>
|
||||
<string name="configurationImportedSuccessfully">配置导入成功。</string>
|
||||
<string name="prefsImportError">导入设置时出错。</string>
|
||||
<string name="noApplicableFilesFoundInDirectory">该目录中找不到适用的文件。</string>
|
||||
<string name="noFilesImported">无法导入任何文件。</string>
|
||||
<string name="notAllFilesImported">并非所有适用的文件都能导入。</string>
|
||||
<string name="importExportExplanation">点击导入或导出时,您可以选择导入或导出文件的目录。导出时可能会覆盖现有文件。</string>
|
||||
<string name="intentDataComment">如果参数是 Uri 类型,并指定名称为“IntentData”(不区分大小写),则该参数将不会作为普通参数用 putExtra() 添加,而是用 setData() 添加到 Intent 中。</string>
|
||||
<string name="stringNotAllowed">不允许使用字符串 %1$s。</string>
|
||||
<string name="startAppStartType">选择启动类型</string>
|
||||
<string name="startAppByStartActivity">通过 startActivity()</string>
|
||||
<string name="startAppBySendBroadcast">通过 sendBroadcast()</string>
|
||||
<string name="openExamplesPage">打开示例网页</string>
|
||||
<string name="packageName">包名</string>
|
||||
<string name="activityOrActionName">活动/动作名称</string>
|
||||
<string name="warning">警告</string>
|
||||
<string name="ringing">响铃</string>
|
||||
<string name="from">从</string>
|
||||
<string name="to">到</string>
|
||||
<string name="matching">匹配</string>
|
||||
<string name="loadWifiList">加载 WLAN 列表</string>
|
||||
<string name="needLocationPermForWifiList">您的设备已连接过的 WLAN 列表可用于确定您去过的地点。因此,加载 WLAN 列表需要位置权限。若要从列表中选择 WLAN,就需要授予该权限。如果不想这样,您仍然可以手动输入 WLAN 名称。</string>
|
||||
<string name="noKnownWifis">您的设备上没有已知的 WLAN。</string>
|
||||
<string name="urlToTriggerExplanation">此功能不会打开浏览器,而是在后台触发网址。例如可以使用此功能向智能家居发送命令。</string>
|
||||
<string name="automaticUpdateCheck">检查更新</string>
|
||||
<string name="automaticUpdateCheckSummary">仅适用于 APK 版本。</string>
|
||||
<string name="updateAvailable">有可用更新。要打开浏览器下载吗?</string>
|
||||
<string name="locationFound">位置已找到。建议的最小半径为 %1$d 米。</string>
|
||||
<string name="locationFoundInaccurate">只能找到精度有限的位置。可能不太可靠。建议的最小半径为 %1$d。</string>
|
||||
<string name="clone">克隆</string>
|
||||
<string name="noLocationCouldBeFound">无法找到位置,超时时间 %1$s 秒已到。</string>
|
||||
<string name="pleaseGiveBgLocation">下一个屏幕中请转到权限 - 位置,选择“始终允许”以允许 Automation 在后台确定您的位置。</string>
|
||||
<string name="vibrate">振动</string>
|
||||
<string name="test">测试</string>
|
||||
<string name="VibrateExplanation">输入振动时间,后跟逗号,然后是暂停时间。可以根据需要连接任意数量的振动(同样用逗号分隔)。例如,模式 100,500,500,1000,100 会振动 100、等待 500、振动 500、等待 1000、振动 100 毫秒。如果发现丢掉了一次振动,请尝试增加它之前的暂停。</string>
|
||||
<string name="pleaseEnterValidVibrationPattern">请输入有效的振动模式。</string>
|
||||
<string name="newsOptIn">您愿意在主屏幕上接收有关此应用的新闻吗(仅重要的)?它们是从开发者的网站下载的。不会有侵入性通知,只是打开应用时主屏幕上显示文本。</string>
|
||||
<string name="top">顶部</string>
|
||||
<string name="bottom">底部</string>
|
||||
<string name="tabsPlacement">标签栏位置</string>
|
||||
<string name="tabsPlacementSummary">选择标签栏的位置。</string>
|
||||
<string name="wifiApi30">因为 Google 又破坏了 Android 的部分功能,从 API 30 开始只能显示当前可见的 WLAN,而不是设备已连接过的所有 WLAN。</string>
|
||||
<string name="silentTriggersDnd">注意:在较新的设备上,静音模式通常会触发勿扰。如果您的设备出现这种情况,建议改用正常模式并将所有音量降低为零。</string>
|
||||
<string name="tones">提示音</string>
|
||||
<string name="miscellaneous">杂项</string>
|
||||
<string name="dnd">勿扰</string>
|
||||
<string name="dndOff">关闭勿扰</string>
|
||||
<string name="dndPriority">仅限优先事项通知</string>
|
||||
<string name="dndAlarms">仅限闹钟</string>
|
||||
<string name="dndNothing">完全阻止</string>
|
||||
<string name="dndRemarks">详细设置(如允许通话、选择特定号码等)只能在系统设置更改。</string>
|
||||
<string name="automationNotificationsIgnored">如果不选择特定应用,而是选择“任何应用”,则会忽略来自 Automation 的通知以避免循环。</string>
|
||||
<string name="repeatEveryXseconds">每 x 秒重复一次</string>
|
||||
<string name="repeatEveryXsecondsWithVariable">每 %1$s 秒重复一次</string>
|
||||
<string name="enterRepetitionTime">请输入正整数的重复时间。</string>
|
||||
<string name="elementSkipped">无法读取配置文件的某个元素。该文件可能是由较新的程序版本创建的。</string>
|
||||
<string name="donate">捐赠</string>
|
||||
<string name="btTetheringNotice">此功能已确认在 Android 8.0 之前有效。从某个更高版本开始它就失效了,但是由于缺少物理设备,我不知道是哪个版本。在 Android 11 上它肯定失效了。如果您有两者之间的版本,请告诉我此功能是否有效。</string>
|
||||
<string name="notice">注意</string>
|
||||
<string name="deviceOrientation">设备方向</string>
|
||||
<string name="tolerance">公差 (0-180)</string>
|
||||
<string name="orientationAzimuth">方位角:</string>
|
||||
<string name="orientationPitch">俯仰角:</string>
|
||||
<string name="orientationRoll">倾侧角:</string>
|
||||
<string name="enterValidNumbersIntoAllFields">请在所有字段中输入有效数字。</string>
|
||||
<string name="deviceOrientationExplanation">设备移动时以下数字会更新。以下是设备的当前方向(以度为单位)。如果处于所需的方向,请点击应用按钮将当前值复制到所需字段。因为再次达到这个精确方向的可能性很小,所以还必须输入公差。公差是方向可以在两侧偏离的度数。因此 15° 对应 30° 的总角度,两侧各 15°。如果您只关心某个轴,请为其他两个轴指定 180° 的公差。</string>
|
||||
<string name="wouldCurrentlyApply">当前符合吗?</string>
|
||||
<string name="deviceIsInCertainOrientation">设备处于特定方向</string>
|
||||
<string name="toleranceOf180OnlyAllowedIn2Fields">仅允许 2 个公差字段为 180,不允许 3 个均为此值。否则触发器将始终应用。</string>
|
||||
<string name="unknown">未知</string>
|
||||
<string name="orientation">方向</string>
|
||||
<string name="triggerWrong">这个触发器有问题。无法正确加载。</string>
|
||||
<string name="turnScreenOnOrOff">打开或关闭屏幕</string>
|
||||
<string name="turnScreenOn">打开屏幕</string>
|
||||
<string name="turnScreenOff">关闭屏幕</string>
|
||||
<string name="mustApply">必须符合</string>
|
||||
<string name="deviceOrientationTimeAcceptIntervalTitle">信号频率</string>
|
||||
<string name="deviceOrientationTimeAcceptIntervalSummary">每 x 毫秒接收一次新的运动信号</string>
|
||||
<string name="deviceOrientationSettings">设备方向设置</string>
|
||||
<string name="android.permission.BIND_DEVICE_ADMIN">设备管理员</string>
|
||||
<string name="deviceAdminNote">您创建的至少 1 条规则需要设备管理员权限。</string>
|
||||
<string name="explanationDeviceOrientationDirection">如果选中该复选框,则要求设备必须处于您指定的方向。如果未选中,任何不符合设定的方向都可接受。</string>
|
||||
<string name="permissionsRequiredNotAvailable">您的规则需要权限,而已安装的 Automation 版本无法请求这些权限。</string>
|
||||
<string name="smsDialogNotice">如果您没有在本程序中使用过发送短信操作,Android 可能会显示一个额外的确认对话框,请求您允许发送消息。如果希望此动作可在后台运行,您需要选中“始终允许”复选框并确认。建议手动运行一次此规则以触发此确认对话框。</string>
|
||||
<string name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS">从电池优化中排除</string>
|
||||
<string name="recommendedForBetterReliability">推荐,可提高可靠性</string>
|
||||
<string name="needsToBeActive">需要激活</string>
|
||||
<string name="checkSettings">检查设置</string>
|
||||
<string name="profileActive">情景模式 %1$s 已激活</string>
|
||||
<string name="profileNotActive">情景模式 %1$s 未激活</string>
|
||||
<string name="profileTriggerCheckSettings">如果未禁用此复选框,则仅检查所选情景模式是否上次激活。从外部更改任何声音相关设置都没有影响。然而,如果启用此复选框,则当前音频设置确实需要和情景模式中定义的相同。注意:目前尚不支持检查铃声文件。</string>
|
||||
<string name="ruleXIsUsingProfileY">无法删除此情景模式。规则 %1$s 引用了情景模式 %2$s。</string>
|
||||
<string name="profileCouldNotBeDeleted">无法删除情景模式。</string>
|
||||
<string name="noRepetition">无重复</string>
|
||||
<string name="usingAuthentication">使用身份验证</string>
|
||||
<string name="toNumber">到号码</string>
|
||||
<string name="message">信息</string>
|
||||
<string name="onDays">在星期中的</string>
|
||||
<string name="notSet">未设置</string>
|
||||
<string name="takeLauncherActivity">自动查找</string>
|
||||
<string name="pickActivityManually">手动选择</string>
|
||||
<string name="launcherOrManualExplanation">简易模式:Automation 可以尝试自动识别该程序的启动器活动,或者您也可以手动选择该应用的一个活动。您想要怎么做?</string>
|
||||
<string name="launcherNotFound">无法识别此应用的启动器活动。必须手动选择。</string>
|
||||
<string name="createNotification">创建通知</string>
|
||||
<string name="enterTitle">输入标题。</string>
|
||||
<string name="enterText">输入文本。</string>
|
||||
<string name="info">信息</string>
|
||||
<string name="profileWasNotFound">此规则使用的情景模式似乎已不存在。已选择按字母顺序排列的第一个。</string>
|
||||
<string name="notificationCloseActionExplanation">若不指定任何条件,则此动作将关闭所有通知。因此,建议至少指定应用、标题或文本之一。</string>
|
||||
<string name="closeNotifications">关闭通知</string>
|
||||
<string name="comparisonCaseInsensitive">比较不区分大小写</string>
|
||||
<string name="profileWarning">此处的设置可能会导致您无法再注意到手机中的某些内容,甚至可以让您的起床闹钟静音。所以无论怎样设置——强烈建议测试,在 Android 更新之后也要再测试。</string>
|
||||
<string name="ifString">如果</string>
|
||||
<string name="emailContactNotice">电子邮件是向我报告错误、提出问题或建议的首选联系方式。前往控制中心了解更多信息。\n许多问题无法立即解答,需要进行一些技术研究。所以请耐心等待。</string>
|
||||
<string name="controlCenter">控制中心</string>
|
||||
<string name="sendEmailToDev">向开发者发送电子邮件</string>
|
||||
<string name="screenIs">屏幕 %1$s</string>
|
||||
<string name="on">开启</string>
|
||||
<string name="off">关闭</string>
|
||||
<string name="unlocked">解锁</string>
|
||||
<string name="selectDesiredState">选择所需状态</string>
|
||||
<string name="screenState">屏幕状态</string>
|
||||
<string name="featureCeasedToWorkLastWorkingAndroidVersion">由于 Google 的无限智慧,已知可以使用此功能的最后一个 Android 版本是 %1$s。您可以配置它,但它可能没有任何效果。</string>
|
||||
<string name="actionMediaControl">控制媒体播放</string>
|
||||
<string name="selectCommand">选择命令</string>
|
||||
<string name="playPause">切换播放/暂停</string>
|
||||
<string name="play">播放</string>
|
||||
<string name="pause">暂停</string>
|
||||
<string name="previous">上一个</string>
|
||||
<string name="next">下一个</string>
|
||||
<string name="android.permission.MEDIA_CONTENT_CONTROL">控制媒体播放</string>
|
||||
<string name="stop">停止</string>
|
||||
<string name="pleaseSelectActionValue">请选择一个动作!</string>
|
||||
<string name="actionMediaControlNotice">注意此操作可能不适用于所有播放器。即使适用,也可能不是每个按钮都可用。</string>
|
||||
<string name="musicPlaying">音乐播放</string>
|
||||
<string name="selectParameters">选择参数</string>
|
||||
<string name="musicIsPlaying">正在播放音乐</string>
|
||||
<string name="musicIsNotPlaying">未在播放音乐</string>
|
||||
<string name="musicPlayingDetection">音乐播放检测</string>
|
||||
<string name="musicCheckFrequencyTitle">检测频率 [ms]</string>
|
||||
<string name="musicCheckFrequencySummary">检测之间的毫秒数</string>
|
||||
<string name="locationNotWorkingOn12">目前获取位置似乎在 Android 12 设备上无效。如果在你的设备上无效,我很抱歉。我找到原因后会尽快解决。所以如果圆圈不停止旋转,你就知道为什么了。</string>
|
||||
<string name="lastProfile">最后的情景模式:</string>
|
||||
<string name="queryAllPackages">获取已安装应用列表</string>
|
||||
<string name="timeFrameDaysHint">如果您使用的时间范围跨过午夜,希望触发器在午夜之后也应用,您还需要选择第二天。</string>
|
||||
<string name="featureNotInGooglePlayVersion">此功能在 Google Play 版本中不再可用。\n\nGoogle 时常欺负开发者。要想继续使用某些功能,就必须提交文件。不幸的是,文件被拒绝的可能性为 99%。这很像 Asterix 漫画/电影中的情况。\n\n以前我花了数周时间与他们争论这类情况,但不断遭到拒绝 - 要么是被机器人拒绝,要么是和机器人同样聪明的人。最后我只能决定是从 Play 商店中完全删除此应用,还是删除此功能。\n如果您需要这些功能,请考虑使用我网站上的 APK 版本或 F-Droid 中的版本。</string>
|
||||
<string name="startActivityInsertManually">此限制仅涉及应用选择,不涉及实际启动。因此,如果您知道应用名称,您仍然可以手动输入它。</string>
|
||||
<string name="deviceStarts">设备启动</string>
|
||||
<string name="serviceStarts">服务启动</string>
|
||||
<string name="deviceIsStarting">设备正在启动</string>
|
||||
<string name="serviceIsStarting">服务正在启动</string>
|
||||
<string name="broadcastReceived">收到广播</string>
|
||||
<string name="broadcastNotReceived">未收到广播</string>
|
||||
<string name="explanationBroadcastTrigger">您手机上的大多数事件将通过在整个操作系统中广播来“发布”。\n例如打开/关闭飞行模式将触发这样的广播。这些广播不是自动可见/可听的,但如果某个应用(如 Automation)感兴趣,它可以连接到广播。当广播发生时,它就会收到通知并可以做出反应。\n\n您可以在此处定义应用将等待的广播事件。您可以手动输入,从某处复制粘贴,或从建议列表中选择一个。由于此触发器应该非常灵活,我无法提供有关这些项目的解释。\n\n建议列表并不完整。请访问以下网址查看 Android 文档。\n此外,任何应用都可以发送自定义事件,当然这些事件不会出现在 Android 文档中。\n\n许多广播需要特定权限才能工作。我会尝试在我知道需要的地方请求权限。如果您认为输入的动作需要某个权限,请告诉我。\n\n“未收到”表示自服务启动后尚未收到这种广播。响应某些参数正在开发中。</string>
|
||||
<string name="broadcastReceivedTitle">收到广播</string>
|
||||
<string name="logsExplanation">为避免不必要的存储损耗,默认不保存日志。因此,如果您遇到问题,请先在设置中启用日志,并将日志级别设置为 5,然后重现问题。只有这样才能附加日志。</string>
|
||||
<string name="broadcastsShowSuggestions">显示建议</string>
|
||||
<string name="selectBroadcast">选择广播</string>
|
||||
<string name="lockedWithoutSecurity">锁定(仅滑动,无 PIN)</string>
|
||||
<string name="lockedWithSecurity">锁定(使用 PIN 等)</string>
|
||||
<string name="lockedCommentScreenMustBeOff">任何锁定状态都只能在屏幕关闭时检测到。</string>
|
||||
<string name="emailPretext">如果您想报告错误、提出建议或问题,请在电子邮件中写下内容。不要只给我发送附件和默认邮件正文。除非我们已经在对话中,否则我会忽略这些。</string>
|
||||
<string name="sendBroadcast">发送广播</string>
|
||||
<string name="enterBroadcast">输入广播操作。</string>
|
||||
<string name="broadcastExplanation">此动作允许通过 Android 消息系统发送广播。这对用户不可见,但侦听该特定广播的应用可以响应广播发送。</string>
|
||||
<string name="directionStringDoesNotContain">不包含</string>
|
||||
<string name="runExecutable">运行脚本或可执行文件</string>
|
||||
<string name="path">路径</string>
|
||||
<string name="parameters">参数</string>
|
||||
<string name="chooseExecutable">选择可执行文件</string>
|
||||
<string name="runAsRoot">以 root 身份运行</string>
|
||||
<string name="selectValidExecutable">选择有效的可执行文件。</string>
|
||||
<string name="fileNotExecutable">该文件不是可执行文件。</string>
|
||||
<string name="wifiExplanation1">以 Android Q 或更高版本为目标平台的应用无法再打开或关闭 WLAN。请将此限制归咎于 Google,而不是我。您可以通过 root 您的设备并选中下面的复选框来绕过此限制。也可以从 F-Droid 或我的网站下载此应用,因为这些版本不强制以最新的 API 级别为目标平台。</string>
|
||||
<string name="wifiExplanation2">当启用飞行模式时,应用只能使用 root 权限切换 WLAN。</string>
|
||||
<string name="usingRoot">使用 root</string>
|
||||
<string name="runExecutableExplanation">您可以在此处选择将作为动作执行的脚本或可执行文件。\n\n但是您必须自己处理一些先决条件。Google 已经让运行常规 Android 应用以外的任何程序变得非常困难。\n\n1. 该脚本需要标记为可执行。在普通的 Android 系统(没有 root)上,这实际上是困难的部分。\n\n2. 这也意味着 Automation 必须能够执行文件,而不仅仅是所有者或组。\n\n3. 如果是脚本,则必须在脚本的标头中指定有效的 shell。\n\n如果无法满足上述要求,您也可以尝试将一个 shell 指定为实际的可执行文件(例如 /system/bin/sh),将脚本作为参数。这对至少一个用户有效。</string>
|
||||
<string name="tetheringActive">网络共享已激活</string>
|
||||
<string name="tetheringNotActive">网络共享未激活</string>
|
||||
<string name="tetheringState">网络共享状态</string>
|
||||
<string name="regularExpressionsIfEquals">如果选择“等于”,您可以输入正则表达式。</string>
|
||||
<string name="enter_a_number">输入一个数字。</string>
|
||||
<string name="duration">持续时间 [ms]</string>
|
||||
<string name="keepDeviceAwake">保持设备唤醒</string>
|
||||
<string name="wakeLockTimeout">指定超时</string>
|
||||
<string name="wakeLockExplanation">启用会保持屏幕打开,停用则允许屏幕关闭。要保持打开状态,可以输入一个持续时间(之后屏幕就可以关闭),也可以无限期保持打开。在后一种情况下,您需要创建另一个保持唤醒操作(在本规则或其他规则中)并选择停用。</string>
|
||||
<string name="mayUseRegularExpressions">此处也可以输入正则表达式。</string>
|
||||
<string name="simplyDismissNotification">直接关闭</string>
|
||||
<string name="clickNotificationButton">点击一个按钮</string>
|
||||
<string name="withButton">使用按钮 %1$s</string>
|
||||
<string name="subSystemState">子系统状态</string>
|
||||
<string name="bluetooth">蓝牙</string>
|
||||
<string name="locationRequiredToDetermineWifiName">要获取 WLAN SSID,应用需要位置权限。由于 Google 版本无法获取该权限,使用此触发器时只能不指定 SSID。因此只能用于检测 WLAN 是否连接。</string>
|
||||
<string name="usb">USB</string>
|
||||
<string name="type">类型</string>
|
||||
<string name="cable">网线</string>
|
||||
<string name="tetheringBluetoothNotPossible">目前无法检测蓝牙网络共享。只有其他连接方式才会激活此触发器。</string>
|
||||
<string name="startPhoneCall">拨打电话号码</string>
|
||||
<string name="android.permission.CALL_PHONE">拨打电话号码</string>
|
||||
<string name="makePhoneCallExplanation1">此处可以输入一个电话号码,该号码会无提示直接拨打。可以用它来进行如调整呼叫转移等设置。请自行搜索所需的代码。</string>
|
||||
<string name="endPhoneCall">结束通话</string>
|
||||
<string name="android.permission.ANSWER_PHONE_CALLS">结束通话</string>
|
||||
<string name="setVariable">设置变量</string>
|
||||
<string name="deleteVariable">删除变量</string>
|
||||
<string name="VariableKey">变量名</string>
|
||||
<string name="variableValue">变量值</string>
|
||||
<string name="setVariableExplanation">如果将变量设置为空值,它将被删除。</string>
|
||||
<string name="enterVariableKey">输入变量名。</string>
|
||||
<string name="checkVariable">检查变量</string>
|
||||
<string name="checkVariableExplanation">如果值留空,则变量必须未设置才能满足条件。</string>
|
||||
<string name="variableCheckString">如果变量 %1$s 是 %2$s</string>
|
||||
<string name="variableCheckStringDeleted">如果变量 %1$s 未设置</string>
|
||||
<string name="messageType">消息类型</string>
|
||||
<string name="sms">短信</string>
|
||||
<string name="mms">彩信</string>
|
||||
<string name="attachment">附件</string>
|
||||
<string name="chooseFile">选择文件</string>
|
||||
<string name="startAppByStartService">通过 startService()</string>
|
||||
<string name="showToastsForEvents">显示消息框</string>
|
||||
<string name="showToastsForEventsSummary">当规则执行等事件发生时显示消息框</string>
|
||||
<string name="notificationAccessAndroid13">点击“确定”后,选择 Automation,然后选择“授予通知使用权”,然后选择“允许”。\n\n在某些系统上,此设置是灰色的。这种情况下需要前往“设置”->“应用”->“Automation”->3点菜单->解除这些限制。之后返回这里。</string>
|
||||
<string name="displayLanguage">显示语言</string>
|
||||
<string name="displayLanguageSummary">为应用设置自定义语言</string>
|
||||
<string name="wifiMonitoringAlsoRequiresThis">如果触发器使用当前的 WLAN 连接,则也需要此权限。</string>
|
||||
<string name="copyTextToClipboard">将文本复制到剪贴板</string>
|
||||
<string name="textToCopy">要复制的文本</string>
|
||||
<string name="android.permission.SYSTEM_ALERT_WINDOW">显示在其他应用的上层</string>
|
||||
<string name="overlayPermissionHint">点击“确定”后,您将转到一个系统对话框。请在其中选择 Automation 并允许“显示在其他应用的上层”。</string>
|
||||
<string name="variablesOnlyForTypes">变量仅适用于 String 和 URI 参数类型</string>
|
||||
<string name="languageSystemDefault">系统默认</string>
|
||||
<string name="languageEnglish">英语</string>
|
||||
<string name="languageGerman">德语</string>
|
||||
<string name="languageItalian">意大利语</string>
|
||||
<string name="languageSpanish">西班牙语</string>
|
||||
<string name="languageDutch">荷兰语</string>
|
||||
<string name="languageRussian">俄语</string>
|
||||
<string name="languageFrench">法语</string>
|
||||
<string name="languagePolish">波兰语</string>
|
||||
<string name="languageChineseChina">中文(中国)</string>
|
||||
<string name="intentParametersHint">若要指定一个参数,还必须点击“添加 Intent 对”,否则更改不会保存。</string>
|
||||
<string name="wifiTriggerDisconnectionHint">如果您刚刚断开了与上面指定的 wifi 的连接,或者在服务仍在启动并且您没有连接到任何 wifi,则此触发器将有效。 如果您希望触发器仅在您明确断开与某个 wifi 的连接时触发,请添加另一个触发器\"服务未启动\"。</string>
|
||||
<string name="className">类名</string>
|
||||
<string name="startAppByStartForegroundService">来自 startForegroundService()</string>
|
||||
</resources>
|
@ -22,6 +22,32 @@
|
||||
<item name="3">3</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="displayLanguageOptions">
|
||||
<item name="0">@string/languageSystemDefault</item>
|
||||
<item name="1">@string/languageEnglish</item>
|
||||
<item name="2">@string/languageGerman</item>
|
||||
<item name="3">@string/languageItalian</item>
|
||||
<item name="4">@string/languageSpanish</item>
|
||||
<item name="5">@string/languageDutch</item>
|
||||
<item name="6">@string/languageRussian</item>
|
||||
<item name="7">@string/languageFrench</item>
|
||||
<item name="8">@string/languagePolish</item>
|
||||
<item name="9">@string/languageChineseChina</item>
|
||||
|
||||
</string-array>
|
||||
<string-array name="displayLanguageValues">
|
||||
<item name="0">systemDefaultLanguage</item>
|
||||
<item name="1">en</item>
|
||||
<item name="2">de</item>
|
||||
<item name="3">it</item>
|
||||
<item name="4">es</item>
|
||||
<item name="5">nl</item>
|
||||
<item name="6">ru</item>
|
||||
<item name="7">fr</item>
|
||||
<item name="8">pl</item>
|
||||
<item name="9">zh_CN</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="tabsPlacementOptions">
|
||||
<item name="0">@string/top</item>
|
||||
<item name="1">@string/bottom</item>
|
||||
@ -33,4 +59,14 @@
|
||||
<item name="3">3</item>
|
||||
</string-array>
|
||||
|
||||
<string name="languageSystemDefault">System default</string>
|
||||
<string name="languageEnglish">English</string>
|
||||
<string name="languageGerman">German</string>
|
||||
<string name="languageItalian">Italian</string>
|
||||
<string name="languageSpanish">Spanish</string>
|
||||
<string name="languageDutch">Dutch</string>
|
||||
<string name="languageRussian">Russian</string>
|
||||
<string name="languageFrench">French</string>
|
||||
<string name="languagePolish">Polish</string>
|
||||
<string name="languageChineseChina">Chinese (China)</string>
|
||||
</resources>
|
@ -70,7 +70,7 @@
|
||||
<string name="end">End</string>
|
||||
<string name="save">Save</string>
|
||||
<string name="urlToTrigger">URL to trigger:</string>
|
||||
<string name="urlLegend">Variables:\nYou can use the following variables. Upon triggering they will be replaced with the corresponding value on your device. Include the brackets in your text.\n\n[uniqueid] - Your device\'s unique id\n[serialnr] - Your device\'s serial number (< Android 9)\n[latitude] - Your device\'s latitude\n[longitude] - Your device\'s longitude\n[phonenr] - Number of last incoming or outgoing call\n[d] - Day of the month, 2 digits with leading zeros\n[m] - Numeric representation of a month, with leading zeros\n[Y] - A full numeric representation of a year, 4 digits\n[h] - 12-hour format of an hour with leading zeros\n[H] - 24-hour format of an hour with leading zeros\n[i] - Minutes with leading zeros\n[s] - Seconds, with leading zeros\n[ms] - milliseconds\n[notificationTitle] - title of last notification\n[notificationText] - text of last notification</string>
|
||||
<string name="urlLegend">Variables:\nYou can use the following variables. Upon triggering they will be replaced with the corresponding value on your device. Include the brackets in your text.\n\n[uniqueid] - Your device\'s unique id\n[serialnr] - Your device\'s serial number (< Android 9)\n[latitude] - Your device\'s latitude\n[longitude] - Your device\'s longitude\n[phonenr] - Number of last incoming or outgoing call\n[d] - Day of the month, 2 digits with leading zeros\n[m] - Numeric representation of a month, with leading zeros\n[Y] - A full numeric representation of a year, 4 digits\n[h] - 12-hour format of an hour with leading zeros\n[H] - 24-hour format of an hour with leading zeros\n[i] - Minutes with leading zeros\n[s] - Seconds, with leading zeros\n[ms] - milliseconds\n[notificationTitle] - title of last notification\n[notificationText] - text of last notification\n[variable-VARIABLENAME] - The value of your custom defined variable</string>
|
||||
<string name="wifi">wifi</string>
|
||||
<string name="activating">Activating</string>
|
||||
<string name="deactivating">Deactivating</string>
|
||||
@ -125,7 +125,7 @@
|
||||
<string name="soundSettings">Sound settings</string>
|
||||
<string name="showHelp">Show help</string>
|
||||
<string name="rules">Rules</string>
|
||||
<string name="helpTextRules">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.</string>
|
||||
<string name="helpTextRules">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.\nThe terms trigger and condition are being used synonymously. All of them are conditions, but the last one to meet its required value could be called trigger because it is the final piece of the puzzle to cause a rule to be executed.</string>
|
||||
<string name="timeframes">TimeFrames</string>
|
||||
<string name="helpTextTimeFrame">If you specify a rule with a timeframe you have two choices. You can choose between entering OR leaving a timeframe. Either way a rule is triggered only once. So 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.</string>
|
||||
<string name="helpTextSound">On the main screen you can use lock sound changes to temporarily avoid rule based sound changes. E.g. you may be in a situation or place where usually ringtones are ok, but this one time it would be disturbing. The feature will automatically deactivate once the configured time has elapsed. Click the + button to add the given amount of time. Once it is active you may deactivate it again using the toggle button (and that way enable rule based sound changes again).</string>
|
||||
@ -422,7 +422,7 @@
|
||||
<string name="noDataChangedReadingAnyway">It appears no data change has been saved. However there may have been changes in memory that need to be rolled back. Rereading file.</string>
|
||||
<string name="bluetoothConnection">Bluetooth connection</string>
|
||||
<string name="bluetoothConnectionTo">Bluetooth connection to %1$s</string>
|
||||
<string name="bluetoothDisconnectFrom">Bluetooth connection to %1$s torn</string>
|
||||
<string name="bluetoothDisconnectFrom">Bluetooth connection from %1$s torn</string>
|
||||
<string name="bluetoothDeviceInRange">Bluetooth device %1$s in range.</string>
|
||||
<string name="bluetoothDeviceOutOfRange">Bluetooth device %1$s out of range.</string>
|
||||
<string name="anyDevice">any device</string>
|
||||
@ -788,7 +788,7 @@
|
||||
<string name="android.permission.MEDIA_CONTENT_CONTROL">Control media playback</string>
|
||||
<string name="stop">stop</string>
|
||||
<string name="pleaseSelectActionValue">Please select an action!</string>
|
||||
<string name="actionMediaControlNotice">Keep in mind that this action may not work with ALL players out there. And even if it does, not every buttons does necessarily work.</string>
|
||||
<string name="actionMediaControlNotice">Keep in mind that this action may not work with ALL players out there. And even if it does, not every button may be functional.</string>
|
||||
<string name="musicPlaying">Music playing</string>
|
||||
<string name="selectParameters">Select parameters</string>
|
||||
<string name="musicIsPlaying">music is playing</string>
|
||||
@ -874,4 +874,19 @@
|
||||
<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>
|
||||
<string name="notificationAccessAndroid13">After clicking ok, select Automation, then select \"Allow notification access\", then \"allow\".\n\nOn some systems this setting is greyed out. In those cases you need to go to \"settings\" -> \"apps\" -> \"Automation\" -> 3-dots-menu -> Lift these restrictions. Afterwards return here.</string>
|
||||
<string name="displayLanguage">Display language</string>
|
||||
<string name="displayLanguageSummary">Set a custom language for the application</string>
|
||||
<string name="wifiMonitoringAlsoRequiresThis">This permission is also required if the trigger is using the current wifi connection.</string>
|
||||
<string name="copyTextToClipboard">Copy text to clipboard</string>
|
||||
<string name="textToCopy">Text to copy</string>
|
||||
<string name="android.permission.SYSTEM_ALERT_WINDOW">Display over other apps</string>
|
||||
<string name="overlayPermissionHint">After clicking OK you\'ll be sent to a system dialog. Please select Automation there and allow "Display over other apps".</string>
|
||||
<string name="variablesOnlyForTypes">Variables are only available for parameter types String and URI</string>
|
||||
<string name="intentParametersHint">If you want to specify a parameter you also have to click \"Add intent pair\". Otherwise your changes will not be saved.</string>
|
||||
<string name="wifiTriggerDisconnectionHint">This trigger will be valid if you just disconnected from the wifi specified above OR while the service is still starting and if you\'re not connected to any wifi. If you want the trigger to fire only when you\'re explicitly disconnecting from a certain wifi, add another trigger \"service is not starting\".</string>
|
||||
<string name="className">Class full name</string>
|
||||
<string name="startAppByStartForegroundService">by startForegroundService()</string>
|
||||
</resources>
|
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
@ -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
|
3
fastlane/metadata/android/de-DE/changelogs/127.txt
Normal file
@ -0,0 +1,3 @@
|
||||
* Behoben: Bearbeiten von Variablenaktionen war nicht möglich
|
||||
* Hinzugefügt: Möglichkeit, eine benutzerdefinierte Sprache in den Einstellungen auszuwählen
|
||||
* Neue Aktion: Text in die Zwischenablage kopieren
|
2
fastlane/metadata/android/de-DE/changelogs/130.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Behoben: Einführung der Overlay-Berechtigung, damit startActivity() im Hintergrund arbeiten kann
|
||||
* Behoben: Rufnummer wieder als Variable verfügbar (Berechtigung READ_CALL_LOGS erforderlich)
|
1
fastlane/metadata/android/de-DE/changelogs/131.txt
Normal file
@ -0,0 +1 @@
|
||||
* Behoben: Absturz bei der Verwaltung von Telefonanrufaktionen in der F-Droid-Version
|
6
fastlane/metadata/android/de-DE/changelogs/132.txt
Normal file
@ -0,0 +1,6 @@
|
||||
* Behoben: Aktion Programm/Script ausführen - Bearbeitungswerte wurden im Editor nicht geladen
|
||||
* Behoben: Führende Null in Sekunden-Variable fehlte bei einstelligen Zahlen
|
||||
* Behoben: Die Benachrichtigung zum Schließen funktionierte nicht, wenn die eigene Service-Benachrichtigung der App ausgeblendet war
|
||||
* Hinzugefügt: Variablen können in Intent-Parametern verwendet werden
|
||||
* Hinzugefügt: Polnische Übersetzung
|
||||
* Entfernt: Toasts für Computerverbindungen/-trennungen wurden entfernt
|
4
fastlane/metadata/android/de-DE/changelogs/133.txt
Normal file
@ -0,0 +1,4 @@
|
||||
* Behoben: [Variablenname] wurde am Ende fälschlicherweise durch ein ] ersetzt
|
||||
* Behoben: Benutzerdefinierte Sprache einstellen
|
||||
* Behoben: Sonderzeichen beim Ausführen von Telefonanrufen wurden nicht kodiert
|
||||
* Hinzugefügt: Chinesische Übersetzung (vereinfacht)
|
2
fastlane/metadata/android/de-DE/changelogs/135.txt
Normal file
@ -0,0 +1,2 @@
|
||||
* Geändert: Symbol in Play store Version
|
||||
* Geändert: targetSdk mußte in Google Play Version auf 32 erhöht werden. Falls das Fehler verursacht, denken Sie darüber nach zur F-Droid oder APK version zu wechseln.
|
6
fastlane/metadata/android/de-DE/changelogs/136.txt
Normal file
@ -0,0 +1,6 @@
|
||||
* Behoben: Overlay-Berechtigung für Start-Telefonanruf-Aktion hinzugefügt
|
||||
* Behoben: Der Auslöser "Akku wird geladen" wurde nur einmal ausgelöst und nicht nach dem Trennen und Anschließen des Ladegeräts
|
||||
* Behoben: WLAN-Auslöser wurde beim Trennen der Verbindung nicht zuverlässig ausgelöst
|
||||
* Behoben: Auf Api-Level <=28 wurde eine Berechtigung für ActivityDetection angefordert, die nicht erteilt werden konnte
|
||||
* Behoben: Die Aktion "Andere Anwendung starten" startete einen Dienst nicht immer korrekt
|
||||
* Geändert: targetSdk mußte in Google Play Version auf 33 erhöht werden. Falls das Fehler verursacht, denken Sie darüber nach zur F-Droid oder APK version zu wechseln.
|
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
|