diff --git a/app/build.gradle b/app/build.gradle
index bd83c02..024852d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -11,8 +11,8 @@ android {
compileSdkVersion 31
buildToolsVersion '29.0.2'
useLibrary 'org.apache.http.legacy'
- versionCode 132
- versionName "1.7.16"
+ versionCode 133
+ versionName "1.7.17"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
@@ -39,6 +39,12 @@ android {
targetSdkVersion 31
}
+ /*
+ 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"
diff --git a/app/src/main/java/com/jens/automation2/Actions.java b/app/src/main/java/com/jens/automation2/Actions.java
index 95f7c94..5f56a24 100644
--- a/app/src/main/java/com/jens/automation2/Actions.java
+++ b/app/src/main/java/com/jens/automation2/Actions.java
@@ -93,6 +93,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
@@ -2272,7 +2273,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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityControlCenter.java b/app/src/main/java/com/jens/automation2/ActivityControlCenter.java
index 0a6de71..f113e1c 100644
--- a/app/src/main/java/com/jens/automation2/ActivityControlCenter.java
+++ b/app/src/main/java/com/jens/automation2/ActivityControlCenter.java
@@ -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)
diff --git a/app/src/main/java/com/jens/automation2/ActivityDisplayLongMessage.java b/app/src/main/java/com/jens/automation2/ActivityDisplayLongMessage.java
index 9f29e8f..9760dff 100644
--- a/app/src/main/java/com/jens/automation2/ActivityDisplayLongMessage.java
+++ b/app/src/main/java/com/jens/automation2/ActivityDisplayLongMessage.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityHelp.java b/app/src/main/java/com/jens/automation2/ActivityHelp.java
index 6e75ee5..5f88e1d 100644
--- a/app/src/main/java/com/jens/automation2/ActivityHelp.java
+++ b/app/src/main/java/com/jens/automation2/ActivityHelp.java
@@ -13,6 +13,7 @@ public class ActivityHelp extends Activity
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
+ Miscellaneous.setDisplayLanguage(this);
setContentView(layout.activity_help_text);
TextView tvHelpTextEnergySaving = (TextView) findViewById(R.id.tvHelpTextEnergySaving);
diff --git a/app/src/main/java/com/jens/automation2/ActivityMainPoi.java b/app/src/main/java/com/jens/automation2/ActivityMainPoi.java
index 2d8a1f7..f205ee7 100644
--- a/app/src/main/java/com/jens/automation2/ActivityMainPoi.java
+++ b/app/src/main/java/com/jens/automation2/ActivityMainPoi.java
@@ -44,7 +44,7 @@ public class ActivityMainPoi extends ActivityGeneric
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
- Miscellaneous.setDisplayLanguage(ActivityMainPoi.this);
+ Miscellaneous.setDisplayLanguage(this);
setContentView(R.layout.main_poi_layout);
instance = this;
@@ -108,6 +108,13 @@ public class ActivityMainPoi extends ActivityGeneric
this.storeServiceReferenceInVariable();
}
+ @Override
+ protected void onResume()
+ {
+ super.onResume();
+ Miscellaneous.setDisplayLanguage(this);
+ }
+
private void buttonAddPoi()
{
poiToEdit = null;
diff --git a/app/src/main/java/com/jens/automation2/ActivityMainProfiles.java b/app/src/main/java/com/jens/automation2/ActivityMainProfiles.java
index cca5127..65e7346 100644
--- a/app/src/main/java/com/jens/automation2/ActivityMainProfiles.java
+++ b/app/src/main/java/com/jens/automation2/ActivityMainProfiles.java
@@ -40,7 +40,7 @@ public class ActivityMainProfiles extends ActivityGeneric
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
- Miscellaneous.setDisplayLanguage(ActivityMainProfiles.this);
+ Miscellaneous.setDisplayLanguage(this);
setContentView(R.layout.main_profile_layout);
instance = this;
@@ -155,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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityMainRules.java b/app/src/main/java/com/jens/automation2/ActivityMainRules.java
index d49648b..0232e7f 100644
--- a/app/src/main/java/com/jens/automation2/ActivityMainRules.java
+++ b/app/src/main/java/com/jens/automation2/ActivityMainRules.java
@@ -48,7 +48,7 @@ public class ActivityMainRules extends ActivityGeneric
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
- Miscellaneous.setDisplayLanguage(ActivityMainRules.this);
+ Miscellaneous.setDisplayLanguage(this);
setContentView(R.layout.main_rule_layout);
instance = this;
@@ -154,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)
diff --git a/app/src/main/java/com/jens/automation2/ActivityMainScreen.java b/app/src/main/java/com/jens/automation2/ActivityMainScreen.java
index 4b3cef9..16711e3 100644
--- a/app/src/main/java/com/jens/automation2/ActivityMainScreen.java
+++ b/app/src/main/java/com/jens/automation2/ActivityMainScreen.java
@@ -55,7 +55,7 @@ public class ActivityMainScreen extends ActivityGeneric
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
- Miscellaneous.setDisplayLanguage(ActivityMainScreen.this);
+ Miscellaneous.setDisplayLanguage(this);
setContentView(R.layout.main_overview_layout);
activityMainScreenInstance = this;
@@ -434,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))
@@ -571,6 +571,7 @@ public class ActivityMainScreen extends ActivityGeneric
protected void onResume()
{
super.onResume();
+ Miscellaneous.setDisplayLanguage(this);
toggleService.setChecked(AutomationService.isMyServiceRunning(this));
ActivityMainScreen.updateMainScreen();
diff --git a/app/src/main/java/com/jens/automation2/ActivityMainTabLayout.java b/app/src/main/java/com/jens/automation2/ActivityMainTabLayout.java
index bbdf5df..e77e4a9 100644
--- a/app/src/main/java/com/jens/automation2/ActivityMainTabLayout.java
+++ b/app/src/main/java/com/jens/automation2/ActivityMainTabLayout.java
@@ -23,7 +23,7 @@ public class ActivityMainTabLayout extends TabActivity
{
super.onCreate(savedInstanceState);
Settings.readFromPersistentStorage(ActivityMainTabLayout.this);
- Miscellaneous.setDisplayLanguage(ActivityMainTabLayout.this);
+ Miscellaneous.setDisplayLanguage(this);
if(Settings.tabsPlacement == 1)
setContentView(R.layout.main_tab_layout_tabs_at_bottom);
@@ -65,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()));
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionBrightnessSetting.java b/app/src/main/java/com/jens/automation2/ActivityManageActionBrightnessSetting.java
index b4a4796..811171d 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionBrightnessSetting.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionBrightnessSetting.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionCloseNotification.java b/app/src/main/java/com/jens/automation2/ActivityManageActionCloseNotification.java
index 8ab2cfe..f9e8ec2 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionCloseNotification.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionCloseNotification.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionControlMedia.java b/app/src/main/java/com/jens/automation2/ActivityManageActionControlMedia.java
index 9a86dc6..b5e75d1 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionControlMedia.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionControlMedia.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionCopyToClipboard.java b/app/src/main/java/com/jens/automation2/ActivityManageActionCopyToClipboard.java
index c8cf9e9..3c54bc9 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionCopyToClipboard.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionCopyToClipboard.java
@@ -19,6 +19,7 @@ public class ActivityManageActionCopyToClipboard extends Activity
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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionCreateNotification.java b/app/src/main/java/com/jens/automation2/ActivityManageActionCreateNotification.java
index d4f8bc4..63c26da 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionCreateNotification.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionCreateNotification.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionMakePhoneCall.java b/app/src/main/java/com/jens/automation2/ActivityManageActionMakePhoneCall.java
index 864255a..21bd238 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionMakePhoneCall.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionMakePhoneCall.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionPlaySound.java b/app/src/main/java/com/jens/automation2/ActivityManageActionPlaySound.java
index 257c944..59b6b68 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionPlaySound.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionPlaySound.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionRunExecutable.java b/app/src/main/java/com/jens/automation2/ActivityManageActionRunExecutable.java
index 966092a..2f39ff9 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionRunExecutable.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionRunExecutable.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionSendBroadcast.java b/app/src/main/java/com/jens/automation2/ActivityManageActionSendBroadcast.java
index 609a9cc..fe4409d 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionSendBroadcast.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionSendBroadcast.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionSendTextMessage.java b/app/src/main/java/com/jens/automation2/ActivityManageActionSendTextMessage.java
index aab66a6..5771663 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionSendTextMessage.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionSendTextMessage.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionSetVariable.java b/app/src/main/java/com/jens/automation2/ActivityManageActionSetVariable.java
index f7b0be0..fcff468 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionSetVariable.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionSetVariable.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionSpeakText.java b/app/src/main/java/com/jens/automation2/ActivityManageActionSpeakText.java
index f9e8bd4..8d59b68 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionSpeakText.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionSpeakText.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionStartActivity.java b/app/src/main/java/com/jens/automation2/ActivityManageActionStartActivity.java
index ddd1f83..93b8ae1 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionStartActivity.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionStartActivity.java
@@ -66,6 +66,7 @@ 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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionTriggerUrl.java b/app/src/main/java/com/jens/automation2/ActivityManageActionTriggerUrl.java
index 9a41e21..4f1dc64 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionTriggerUrl.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionTriggerUrl.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionVibrate.java b/app/src/main/java/com/jens/automation2/ActivityManageActionVibrate.java
index 5eeb51c..c91549c 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionVibrate.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionVibrate.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionWakeLock.java b/app/src/main/java/com/jens/automation2/ActivityManageActionWakeLock.java
index 01a68d3..e8767a3 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionWakeLock.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionWakeLock.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionWifi.java b/app/src/main/java/com/jens/automation2/ActivityManageActionWifi.java
index 38b948f..0fe79d2 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageActionWifi.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageActionWifi.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManagePoi.java b/app/src/main/java/com/jens/automation2/ActivityManagePoi.java
index 990465f..b6826f2 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManagePoi.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManagePoi.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageProfile.java b/app/src/main/java/com/jens/automation2/ActivityManageProfile.java
index affd738..ceb5338 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageProfile.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageProfile.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageRule.java b/app/src/main/java/com/jens/automation2/ActivityManageRule.java
index 2795b13..32fda94 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageRule.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageRule.java
@@ -154,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;
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java
index 20db470..620664e 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerBroadcast.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerBroadcast.java
index 6c0888f..65282ac 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerBroadcast.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerBroadcast.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerCheckVariable.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerCheckVariable.java
index 901fe63..1062375 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerCheckVariable.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerCheckVariable.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerDeviceOrientation.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerDeviceOrientation.java
index ef3fb19..449e85c 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerDeviceOrientation.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerDeviceOrientation.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerNfc.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerNfc.java
index 7f83691..74df0e0 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerNfc.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerNfc.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java
index bc93f10..690751d 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerPhoneCall.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerPhoneCall.java
index 56103af..98c6ecb 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerPhoneCall.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerPhoneCall.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerProfile.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerProfile.java
index 365b3da..a73b50e 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerProfile.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerProfile.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerSubSystemState.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerSubSystemState.java
index 6c32db7..ec7c71f 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerSubSystemState.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerSubSystemState.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerTethering.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerTethering.java
index 78fd7d6..51b5b32 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerTethering.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerTethering.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerTimeFrame.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerTimeFrame.java
index f63041c..0ba52fd 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerTimeFrame.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerTimeFrame.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerWifi.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerWifi.java
index 5a1abe9..5b09480 100644
--- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerWifi.java
+++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerWifi.java
@@ -49,6 +49,7 @@ public class ActivityManageTriggerWifi extends Activity
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);
diff --git a/app/src/main/java/com/jens/automation2/ActivityPermissions.java b/app/src/main/java/com/jens/automation2/ActivityPermissions.java
index 5cd9091..cb6717e 100644
--- a/app/src/main/java/com/jens/automation2/ActivityPermissions.java
+++ b/app/src/main/java/com/jens/automation2/ActivityPermissions.java
@@ -79,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);
diff --git a/app/src/main/java/com/jens/automation2/ActivitySettings.java b/app/src/main/java/com/jens/automation2/ActivitySettings.java
index 5fbb206..8ac0a12 100644
--- a/app/src/main/java/com/jens/automation2/ActivitySettings.java
+++ b/app/src/main/java/com/jens/automation2/ActivitySettings.java
@@ -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);
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/jens/automation2/ActivityVolumeTest.java b/app/src/main/java/com/jens/automation2/ActivityVolumeTest.java
index b8977b7..4fce038 100644
--- a/app/src/main/java/com/jens/automation2/ActivityVolumeTest.java
+++ b/app/src/main/java/com/jens/automation2/ActivityVolumeTest.java
@@ -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);
diff --git a/app/src/main/java/com/jens/automation2/AsyncTasks.java b/app/src/main/java/com/jens/automation2/AsyncTasks.java
index 3360e84..793e2f4 100644
--- a/app/src/main/java/com/jens/automation2/AsyncTasks.java
+++ b/app/src/main/java/com/jens/automation2/AsyncTasks.java
@@ -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
diff --git a/app/src/main/java/com/jens/automation2/AutomationService.java b/app/src/main/java/com/jens/automation2/AutomationService.java
index 9fb03a4..b2cedb6 100644
--- a/app/src/main/java/com/jens/automation2/AutomationService.java
+++ b/app/src/main/java/com/jens/automation2/AutomationService.java
@@ -12,8 +12,6 @@ import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
-import android.content.res.Configuration;
-import android.content.res.Resources;
import android.media.AudioManager;
import android.os.Binder;
import android.os.Build;
@@ -22,7 +20,6 @@ import android.os.Environment;
import android.os.IBinder;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
-import android.util.DisplayMetrics;
import android.util.Log;
import android.widget.Toast;
@@ -39,7 +36,6 @@ 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
diff --git a/app/src/main/java/com/jens/automation2/Miscellaneous.java b/app/src/main/java/com/jens/automation2/Miscellaneous.java
index 82954cd..e33e819 100644
--- a/app/src/main/java/com/jens/automation2/Miscellaneous.java
+++ b/app/src/main/java/com/jens/automation2/Miscellaneous.java
@@ -760,7 +760,7 @@ public class Miscellaneous extends Service
else
replacement = "unknownVariable";
- source = source.substring(0, pos1) + replacement + source.substring(pos2);
+ source = source.substring(0, pos1) + replacement + source.substring(pos2 +1);
}
// Miscellaneous.logEvent("i", "URL after replace", source);
@@ -2014,7 +2014,16 @@ public class Miscellaneous extends Service
{
if(!Settings.displayLanguage.equals(Settings.default_displayLanguage))
{
- Locale myLocale = new Locale(Settings.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();
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 18d5f11..023e6f2 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -798,4 +798,5 @@
Variablen sind nur für die Parametertypen String und URI verfügbar
Wenn Sie einen Parameter angeben möchten, müssen Sie auch auf \"Intent-Paar hinzufügen\" klicken. Andernfalls werden Ihre Änderungen nicht gespeichert.
Polnisch
+ Chinesisch (China)
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index f32cbd7..b75925d 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -797,4 +797,5 @@
Las variables solo están disponibles para los tipos de parámetro String y URI
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.
Polaco
+ Chino (China)
\ No newline at end of file
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 49ee5c0..9166089 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -797,4 +797,5 @@
Les variables ne sont disponibles que pour les types de paramètres String et URI
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.
Polonais
+ Chinois (Chine)
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 7e4ca67..a5979e4 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -798,4 +798,5 @@
Le variabili sono disponibili solo per i tipi di parametro String e URI
Se si desidera specificare un parametro è necessario fare clic anche su \"Aggiungi coppia intento\". In caso contrario, le modifiche non verranno salvate.
Polacco
+ Cinese (Cina)
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 8471877..8f23869 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -796,5 +796,6 @@
Variabelen zijn alleen beschikbaar voor parametertypen Tekenreeks en URI
Als u een parameter wilt opgeven, moet u ook op \"Intentiepaar toevoegen\" klikken. Anders worden uw wijzigingen niet opgeslagen.
Pools
+ Chinees (China)
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 527b7ed..7d6dcc2 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -895,4 +895,5 @@
Rosyjski
Francuski
Polski
+ Chiński (Chiny)
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 55bde3c..b69e777 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -855,4 +855,5 @@
Переменные доступны только для типов параметров: String и URI
Если вы хотите указать параметр, вам также нужно нажать «Добавить пару намерений». В противном случае ваши изменения не будут сохранены.
Польский
+ Китайский (Китай)
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..bfc491d
--- /dev/null
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -0,0 +1,800 @@
+
+ 激活规则 %1$s
+ 激活配置文件 %1$s
+ 在切换模式下激活规则 %1$s
+ 添加位置
+ 添加规则
+ 位置列表:
+ 规则列表:
+ 请输入有效的名字。
+ 请至少指定一个触发器。
+ 请至少指定一个动作。
+ 没有定义规则。服务不会启动。
+ Automation 服务已启动。
+ 版本 %1$s。
+ GPS 位置和网络位置之间的距离是 %1$d 米。最小半径应该是这个值+1米。
+ 如果您在建筑物中,强烈建议您将设备放在窗户旁边,直到获得位置。否则即使能获得位置,也可能需要很长时间。
+ 获取位置。请稍等…
+ 是
+ 否
+ 请输入有效的纬度。
+ 请输入有效的经度。
+ 请输入有效的正数半径。
+ 至少选择一天。
+ 对规则做什么?
+ 对位置做什么?
+ 对情景模式做什么?
+ 删除
+ 删除
+ Automation 服务已停止。
+ 停止服务。
+ 仍在获取位置
+ 最后的规则:
+ 在
+ 服务:
+ 获取当前位置
+ 保存位置
+ 删除位置
+ 纬度
+ 经度
+ 规则名称
+ 触发器
+ 用“与”连接(所有条件必须同时成立)
+ 添加触发器
+ 动作
+ (将按顺序执行)
+ 添加动作
+ 保存规则
+ 星期一
+ 星期二
+ 星期三
+ 星期四
+ 星期五
+ 星期六
+ 星期日
+ 开始
+ 结束
+ 保存
+ 触发网址:
+ 变量:\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-变量名] - 自定义变量的值
+ WLAN
+ 启用
+ 停用
+ 未能触发蓝牙。这个设备有蓝牙吗?
+ 网址必须至少包含 10 个字符。
+ 输入电话号码和短信。
+ 选择触发器类型
+ 进入
+ 离开
+ 尚未指定任何位置。请先添加位置。
+ 开始
+ 停止
+ 连接
+ 断开
+ 选择位置
+ 选择动作类型
+ 选择情景模式
+ 对触发器做什么?
+ 对动作做什么?
+ 半径必须是正数。
+ 还有引用此位置的规则 (%1$s)。现在不能删除它。
+ 常规设置
+ 开机时启动
+ 开/关
+ 写入日志文件
+ 响铃模式时使用文字转语音
+ 振动模式时使用文字转语音
+ 静音模式时使用文字转语音
+ 响铃模式 TTS
+ 振动模式 TTS
+ 静音模式 TTS
+ 定位设置
+ 如果可能,监听 WLAN 状态变化
+ WLAN 状态
+ WLAN 不可用时监测设备移动
+ 加速度计
+ 手机信号塔保持不变 X 分钟后,使用加速度计
+ 手机信号塔等待时间
+ 加速度计移动阈值
+ 加速度计阈值
+ 定位阈值
+ GPS 位置更新的最小距离变化
+ GPS 更新距离 [m]
+ 网络位置更新的最小距离变化
+ 网络更新距离 [m]
+ 通过 GPS 获取位置时的精度(以米为单位)
+ GPS 精度 [m]
+ 通过手机信号塔获取位置时的精度(以米为单位)
+ 网络位置精度 [m]
+ 位置更新的最小时间间隔(以毫秒为单位)
+ 更新时间 [毫秒]
+ 声音设置
+ 显示帮助
+ 规则
+ 规则中的所有触发器都是用“与”连接的。规则仅在满足所有触发器时才应用。如果您想要“或”,请创建另一个规则。\n触发器和条件是作为同义词使用的。所有的触发器都是条件,而最后一个满足其要求值的条件可以称为触发器,因为它是导致规则执行的“最后一块拼图”。
+ 时间范围
+ 指定时间范围规则时有两种选择。您可以选择进入或离开时间范围。无论哪种方式,规则都只会触发一次。因此,如果您创建一个使用触发器“进入时间范围 XYZ”的规则,让它将响铃模式更改为振动,这并不意味着手机会在时间范围结束时自动更改为响铃。如果想要的话,您需要指定另一个规则,使用另一个时间范围。
+ 在主屏幕上,您可以使用“锁定声音更改”来暂时禁用基于规则的声音更改。例如,您可能在通常允许响铃的情况或地点,但这一次响铃会打扰。一旦配置的时间过去,此功能将自动停用。点击 + 按钮以添加给定的时间。当此功能启用时,您可以使用切换按钮将其停用(即重新启用基于规则的声音更改)。
+ 可切换规则
+ 规则有一个称为“可切换”的设置。它的意思是执行规则后,相同触发器再次触发时,规则会以相反方式再次执行(如果适用的话)。目前这只能和 NFC 标签一起使用。如果在关联了可切换规则时触碰两次标签,就会执行与当前状态相反的操作,例如 WLAN 当前开启时将其关闭。
+ 如果指定了使用进程监控的规则,这个应用就会每 X 秒检查一次该进程(X 可以在设置中更改)。我知道这可能有点慢,但持续监控会很快耗尽电池电量。并且该事件没有来自操作系统的广播。
+ 节能
+ 很多 Android 设备制造商试图通过限制应用的后台活动来节省电量。不幸的是,这通常会导致这些应用无法正常工作,Automation 就是其中之一。请看这个网页,查找如何从这些限制中排除 Automation。
+ 确定速度的两个位置之间最长时间。
+ 时间 [分钟]
+ 超过
+ 低于
+ 噪声级测量
+ 噪声级测量之间的秒数
+ 噪声级测量之间的秒数
+ 每次噪声级测量的时长(以秒为单位)
+ 每次噪声级测量的时长
+ 噪声级测量的物理参考值
+ 噪声测量参考
+ 日志级别(1=最低,5=最高)
+ 日志级别
+ 启用规则
+ 位置
+ 时间范围
+ 电池充电
+ USB 连接到电脑
+ 速度
+ 背景噪声级
+ WLAN
+ 蓝牙
+ USB 网络共享
+ WLAN 网络共享
+ 蓝牙网络共享
+ 屏幕旋转
+ 打开 WLAN
+ 关闭 WLAN
+ 打开蓝牙
+ 关闭蓝牙
+ 触发网址
+ 更改情景模式
+ 打开 USB 网络共享
+ 关闭 USB 网络共享
+ 打开 WLAN 网络共享
+ 关闭 WLAN 网络共享
+ 打开蓝牙网络共享
+ 关闭蓝牙网络共享
+ 打开飞行模式
+ 关闭飞行模式
+ 启用屏幕旋转
+ 禁用屏幕旋转
+ 屏幕旋转已启用。
+ 屏幕旋转已禁用。
+ 屏幕旋转已经是启用的。
+ 屏幕旋转已经是禁用的。
+ 没有定义位置。
+ 活动位置:
+ 最近的位置:
+ 概述
+ 位置
+ 位置
+ 位置由 GPS 坐标和半径组成。因为手机信号塔定位很不精确(但快速、省电),所以不要将半径指定得太小。创建新位置时,此应用会给出建议的最小半径。
+ 服务未运行。
+ 常规
+ 要使用此程序,您必须设置规则。规则包含触发器,例如到达指定区域或进入某个时间。完成后点击主屏幕上的开/关按钮。
+ 未能触发蓝牙。这个设备有蓝牙吗?
+ 应用更新后自动启动服务(如果之前是运行的)。
+ 更新后启动服务
+ WLAN 连接
+ WLAN 名称
+ 输入 WLAN 名称。留空表示任何 WLAN。
+ 取消
+ 开始
+ 停止
+ 连接
+ 断开
+ 超过
+ 低于
+ 连接到 WLAN \"%1$s\"
+ 与 WLAN \"%1$s\" 断开连接
+ 任何 WLAN
+ 无法停止。
+ HTTP(s) 请求
+ 接受所有证书
+ 跳过 SSL 证书的有效性检查(不建议启用)
+ HTTP 请求因连接原因失败时的尝试次数
+ HTTP 尝试次数
+ HTTP 请求超时 [秒]
+ 超时 [秒]
+ 下一次尝试之前暂停 [秒]
+ 暂停 [秒]
+ 手动运行
+ 必须运行服务,才能执行此操作。
+ GPS 比较
+ GPS 超时 [秒]
+ 尝试获取 GPS 位置进行比较的最长时间(以秒为单位)。如果超时就会应用最后已知的位置。
+ 如果您在某个位置,重启设备或此应用时离开该位置,此应用将在下次启动时运行离开该位置相关的规则。
+ 记住最后活动位置
+ 通话时静音
+ 通话时将文字转语音静音
+ 已经有另一个同名的位置。
+ 已经有另一个同名的规则。
+ 启动另一个程序
+ 选择应用
+ 选择软件包
+ 选择所选软件包的活动
+ 启动其他活动时出错
+ 另一个应用启动/停止
+ 进程监控
+ 进程监控之间的秒数
+ 值越低,电池用量越高
+ 进程
+ 进程监控
+ 设置
+ 设置已删除。
+ 设置为默认值。
+ 电池电量
+ 选择速度
+ 选择电池电量
+ 隐私政策
+ 现在将在您的设备上打开浏览器,从开发者的网站加载隐私政策。
+ 下个动作前等待
+ 唤醒设备
+ 输入下个动作之前等待的时间(以毫秒为单位)。
+ 输入设备保持唤醒的最短时间(以毫秒为单位)。0 表示默认值。
+ 输入一个有效的正整数。
+ 向上移动
+ 向下移动
+ 无法向上移动项目。它已经在顶部了。
+ 无法向下移动项目。它已经在底部了。
+ 飞行模式
+ 启用
+ 停用
+ 从 Android 4.2 版本开始,此功能仅在您的设备已获得 root 权限时才有效。
+ 添加 Intent 对
+ 参数名称
+ 参数值
+ 参数类型
+ 选择 Intent 对的类型。
+ 输入 Intent 对的名称。
+ 输入 Intent 对的值。
+ 对 Intent 对做什么?
+ 正在获取已安装应用列表…
+ 在星期几?
+ 时间范围之内还是之外?
+ 打开还是关闭?
+ 名称
+ 半径 [米]
+ 状态
+ 移动数据连接
+ 打开移动数据
+ 关闭移动数据
+ 漫游
+ 启用
+ 停用
+ 到
+ 应用
+ 已
+ 通话
+ 和
+ 电话号码
+ 输入电话号码。留空表示任何号码。
+ 输入电话号码。
+ 选择通话\n方向
+ 任何
+ 来电
+ 去电
+ 来电
+ 去电
+ 任何号码
+ 号码
+ NFC 标签
+ 接近
+ ID 为
+ 这个设备似乎没有 NFC。
+ 从标签中读取 ID
+ 写入标签
+ 输入有效的标签标识符(如“家门”)。
+ 标记写入成功。
+ 写入标签时出错。标签在范围内吗?
+ 发现标签。
+ 请将 NFC 标签置于范围内。
+ 找到标签,文本为:
+ 不支持的编码:
+ 没有 NFC NDEF Intent,但是
+ 此 Android 版本尚不支持 NFC。
+ 无法运行规则。
+ 将标签应用到规则
+ 标签读取成功。
+ 存储的值不适合。
+ 没有标签。
+ 写入新的 NFC ID
+ 使用现有的 NFC 标签
+ 新 ID:
+ 当前 ID:
+ 标签数据不可用,请重新写入。
+ 请将标签置于读取范围内。
+ 切换规则
+ 切换
+ 切换
+ 检测到与位置 %1$s 重叠了 %2$s 米。请至少将半径减少该值。
+ 无
+ 任何位置
+ 位置名称无效。
+ 清除设置
+ 默认设置
+ 你确定吗?
+ 活动检测
+ 活动检测
+ 检测到的活动:
+ 在车辆中(汽车/公共汽车)
+ 在自行车上
+ 步行或跑步
+ 静止
+ 未知
+ 倾斜
+ 步行
+ 跑步
+ 无效活动
+ 选择活动类型
+ 此触发器仅在已安装 Google Play 服务时可用。
+ 活动检测频率 [秒]
+ 尝试检测活动之间的秒数。
+ 活动检测概率
+ 达到此概率时,活动被接受为确定发生。
+ 来自 %1$s 的来电。
+ 去电至 %1$s。
+ 朗读文字
+ 要朗读的文字
+ 目前仅允许切换有 NFC 标签触发器的规则。请参阅帮助以获取更多信息。
+ 从文件中读取位置和规则时出错。
+ 似乎没有保存过数据更改。但内存中可能有更改需要回滚。正在重新读取文件。
+ 蓝牙连接
+ 蓝牙连接到 %1$s
+ 与 %1$s 断开蓝牙连接
+ 蓝牙设备 %1$s 在范围内。
+ 蓝牙设备 %1$s 不在范围内。
+ 任何设备
+ 无设备
+ 列表中的一个
+ 连接到设备
+ 与设备断开连接
+ 设备在范围内
+ 设备不在范围内
+ 选择设备选项。
+ 选择连接选项。
+ 耳机连接
+ 打开音乐播放器
+ 耳机(类型:%1$s)已连接
+ 耳机(类型:%1$s)已断开连接
+ 无麦克风
+ 有麦克风
+ 均可
+ 选择耳机类型
+ 这是什么?
+ 仅私人定位
+ 避免可能会将您的位置发送给提供商(如 Google)的定位方法。这将仅使用 GPS,所以可能较慢或不够可靠。
+ 如果您认为噪声检测不正确(根据您指定的值),请注意每部手机都有差别。所以您可以在设置中更改“噪声测量参考”。更多信息请参阅 https://zh.wikipedia.org/wiki/分贝 。您可以使用主屏幕上的音量校准器来校准您的设备。
+ 提示
+ 选择噪声级
+ 在地图上显示
+ 在您的设备上找不到地图应用。
+ 定位未激活。
+ 添加情景模式
+ 情景模式
+ 声音模式
+ 音量
+ 来电提示音
+ 通知提示音
+ 触感反馈(触摸屏幕时振动)
+ 音乐、视频、游戏等媒体
+ 铃声和通知
+ 闹钟
+ 更改
+ 触摸提示音(进行屏幕选择时的声音)
+ 屏幕锁定/解锁提示音
+ 响铃时振动
+ 情景
+ 正常
+ 振动
+ 静音
+ 输入名称。
+ 未选择更改。情景模式没有意义。
+ 您的配置中没有情景模式。请先创建一个。
+ 激活情景模式时出错:
+ 已经有另一个同名的情景模式。
+ 情景模式名称无效。
+ 写入设置文件时出错。
+ 未知错误。
+ 找不到可写目录,无法保存配置文件。
+ 这很可能不起作用,因为您使用的是 Android 2.3 以上版本。您可以改用 WLAN 网络共享。
+ 使用新线程激活规则。
+ 启动新线程激活规则。
+ 新线程
+ 显示图标
+ 服务运行时显示图标(隐藏仅在 Android 7 以下有效)。如果您使用的是更高版本,请转到系统设置 - Automation - 通知,禁用“Service notification”。
+ 规则历史(最近的在前):
+ 部分选项已禁用,它们目前还无法使用。它们将在以后的程序版本中加入。
+ 锁定声音更改
+ 情景模式将不会激活。最后激活的情景模式已被锁定。
+ 当前音量
+ 输入有效的参考值。
+ 音量校准
+ 要计算噪声监测的分贝值,您需要指定一个所谓的物理参考值。请阅读维基百科以获取更多信息。每个手机的参考值很可能是不同的。调整拖动条以更改设定的物理参考值。参考值越高,分贝值越低。将持续每 %1$s 秒执行一次测量,结果显示在下方。找到合适的值后按返回键。
+ 部分设置将在某些环境设置更改或服务重新启动后应用。
+ 您需要 root 手机才能使用此功能。之后您需要“手动运行规则”来显示超级用户权限提示。出现超级用户弹窗时,您需要始终允许应用执行此操作。否则,手机无人值守时规则将无法生效。
+ 写入配置时出错。有可写存储吗?
+ 无法在变量中插入最后一个电话号码。未找到号码。
+ 用户名
+ 密码
+ 使用身份验证
+ 所需权限
+ 所需权限的说明
+ 确定
+ 禁用的功能
+ 以下权限已被拒绝:
+ 该应用当前以受限模式运行,已停用部分功能。完整运行需要权限。如果您想使用所有功能,必须在以下权限对话框中授予权限,否则某些规则将无法执行。下面给出了所需权限的解释。准备好后请点击“继续”。
+ 要启用您正尝试使用的功能,需要更多权限。点击继续请求权限。
+ 继续
+ 规则
+ 读取和保存设置
+ 警告:功能已禁用,Automation 以受限模式运行。点击这里查看更多信息。
+ 绿 = 启用,红 = 禁用,黄 = 权限不足
+ 需要修改系统设置的权限(即使简单的设置,如打开蓝牙或 WLAN,也需要权限)。点击“继续”后,将弹出一个窗口,您需要对 Automation 启用此权限。然后按返回键。
+ 之后将在下一个对话框中请求其他权限。
+ Automation 需要访问外部存储以读取设置和规则。
+ Automation 需要更多权限才能完整运行。点击此文本以了解更多信息并请求权限。
+ 无效设备
+ 最大日志文件大小(以兆字节为单位)。超出后会轮替。
+ 最大日志文件大小 [Mb]
+ 读取通话记录
+ 读取日历条目
+ 获取确切位置
+ 获取粗略位置
+ 获取位置
+ 通过网络连接发送数据
+ 读取设备的网络状态
+ 读取设备的 WLAN 状态
+ 更改蓝牙设置
+ 更改蓝牙设置
+ 使用 NFC 模块
+ 让手机振动
+ 保持手机唤醒
+ 更改音频设置
+ 录制音频
+ 检测拨出电话
+ 更改设备设置
+ 检测手机状态
+ 读取存储
+ 写入存储
+ 检测正在运行的进程
+ 更改设备设置
+ 检测设备重启
+ 更改设备设置
+ 读取电池状态
+ 更改数据连接
+ 发送短信
+ 读取联系人数据
+ 覆盖请勿打扰设置
+ 需要这些权限:
+ 规则“%1$s”需要这个。
+ 情景模式“%1$s”需要这个。
+ 此功能可以检测您当前是否在旅途中,以及是否步行或乘坐哪种车辆(在一定程度上)。此功能并非 Automation 完全内置,而是由 Google Play 服务提供。技术上它不会给出是/否结果,而是会返回一个百分比,代表对状态检测的确定程度。您可以设置 Automation 会接受结果的百分比值。两点说明:1) 可能同时出现多种状态。例如,您可能在行驶的公共汽车内行走。2) 这种传感器相对耗电。如果可能,您可以考虑使用替代方案,例如要求连接到汽车的免提设备以检测您正在驾驶。
+ 发送短信
+ 要发送的文本
+ 您可以直接输入电话号码,或者使用通讯录选项选择一个。但请注意:这里保存的是号码,而不是联系人。如果您更改了所选联系人的电话号码,则需要更新此规则。它不会自动更新。
+ 从通讯录导入号码
+ 如果您正在使用噪声级触发器:不幸的是,从 Android 9 (Pie) 开始,Google 决定禁止后台应用使用麦克风。所以这个触发器不再有效,无法触发任何规则。
+ 不幸的是,Google 决定在 Android 10 中删除此功能,不再允许常规应用打开或关闭 WLAN。只有当您的设备已获得 root 权限时,它才能继续工作,否则恐怕就没有效果了。
+ 此消息不会再次显示。
+ 在最后一个选择窗口中,您需要选择一个特定的活动。简而言之,这就像所选应用程序的特定窗口。如果您不知道选哪一个,通常最好选择名称中包含“main”或“launcher”的一个。
+ 编辑
+ 点击并按住项目以获取选项。
+ 定位引擎
+ 感谢 Google 的无限智慧和保护所有人隐私的不懈努力(讽刺),所有可能用于发送短信或读取手机状态的触发器和操作都被删除了,因为 Google 认为它们有风险。
+ 启动 Automation 服务
+ 设置屏幕亮度
+ 输入所需的亮度(从 0 到 100)。
+ 启用自动亮度
+ 应用
+ 自动亮度
+ 手动亮度
+ 如果使用自动亮度,下面设置的亮度值可能不会应用很长时间。
+ 在运行 Android 6.0 或更高版本的设备上,屏幕锁定声音无法再自动更改。无论此处如何设置,都不会以任何方式起作用。
+ 启动屏幕
+ 选择启动应用时打开的屏幕。
+ 单击运行规则/配置文件。
+ 为支持基于位置的规则和速度检测,本应用会收集位置数据,即使在关闭或未使用状态下也仍会持续收集。
+ 此应用收集位置数据,以确定您当前是否位于您创建的位置之一。此外,如果您在规则中使用速度触发器,它还用于确定您当前的速度。即使在关闭或未使用状态下(仅当服务激活时),也仍会持续收集。
+ 在后台获取位置。
+ 该设备似乎没有蓝牙。您仍然可以继续配置,但它很可能没有效果。
+ 创建或编辑位置
+ 错误
+ 此功能基于非自由软件,因此在 F-Droid 版本中不可用。
+ 您的设置和/或规则目前正在使用 F-Droid 版本中无法提供的非自由软件功能。这包括检测您当前的身体活动。
+ 您的设置和/或规则目前正在使用 Google Play 版本中无法提供的功能。其中包括与电话和短信相关的任何功能。
+ 发布于
+ 在主屏幕上显示应用新闻
+ 仅是关于此应用的公告,大概每年 1-2 条,不会更多。
+ Automation 现在使用另一个路径来保存您的文件。您所有的 Automation 文件都已移至此处:“%s”。不再需要外部存储权限;您可以撤销它。它将在未来的版本中被删除。
+ 位置已禁用
+ 无法继续在后台确定位置。点击此处了解原因。
+ 不幸的是,无法继续确定您的位置。感谢谷歌的无限智慧与和蔼可亲。\\n\\n让我进一步解释一下。Android 10 开始引入了一项新权限,需要这个权限才能在后台确定您的位置(当然对于本应用是必需的)。虽然我认为这总体上是个好主意,但它给开发人员带来的骚扰却并非如此。\\n\\n开发应用时,可以通过遵守一组要求来尝试获得此权限。不幸的是,我的应用的新版本在三个月内不断被拒绝。我满足了所有的要求,Google 糟糕的开发支持却声称我没有。在向他们证明我确实做到了之后——我得到的回应是“我不能再帮助你了”。最后我放弃了。\\n\\n因此,Google Play 版本无法再使用您的位置作为触发器。我唯一的其他选择是将此应用从商店中完全删除。\\n\\n非常抱歉,但我已尽我所能与没有帮助的“支持”争论了。\\n\\n好消息:您仍然可以使用这个功能!\\n\\nAutomation 现在是开源的,可以在 F-Droid 中找到。这是一个真正关心您的隐私的应用商店——而不仅仅是表现地像这样。只需备份您的配置文件,卸载此应用,从 F-Droid 重新安装它,恢复您的配置文件即可。\\n\\n点击此处了解更多信息:
+ 配置和日志文件保存在文件夹 %1$s 中。点击此文本以打开文件管理器。不幸的是,这只适用于有 root 权限的设备。对于所有其他设备:只需使用导出按钮进行备份。
+ 通知
+ 标题
+ 文本
+ 等于
+ 包含
+ 开头是
+ 结尾是
+ 不等于
+ 任何应用
+ 此触发器将响应其他应用在通知区域打开(或关闭)通知。您可以指定通知必须来自的另一个应用。如果不指定,则来自任何其他应用的通知都会触发。您还可以指定标题或通知正文中必须有或没有的字符串。比较不区分大小写。
+ %1$s 发布通知
+ 来自 %1$s 的通知已删除
+ 通知出现
+ 通知消失
+ 方向
+ 读取系统通知
+ 播放声音
+ 始终播放
+ 如果启用此设置,则始终播放声音。如果停用,则仅当手机未处于静音或振动状态时播放。但启用时不会更改音量,例如手机在响铃模式时,媒体音量也不会自动增加。因此,如果媒体音量处于静音状态,您也不会听到声音。
+ 选择声音文件
+ 文件不存在。
+ 没有安装文件管理器。
+ 附加配置和日志文件。
+ 这将开始写一封新电子邮件,以配置和日志文件作为 zip 附件。它不会自动发送,您仍然需要点击“发送”。比如您也可以将收件人更改为您自己。
+ 这里有 2 个常规选项:\n\n1. 您可以通过选择活动来启动程序。这就像预先选择应用的特定屏幕/窗口。注意这可能并不总是有效,因为应用的窗口可能会相互交互,如传递参数。直接启动一个没有交互过的特定屏幕时,窗口可能会立即关闭(所以它不会真的显示)。还是试试吧!您可以手动输入活动路径,但建议使用“选择”按钮。若要手动输入,请在上方字段中输入应用包名,在下方字段中输入活动的完整路径。\n\n2. 按动作选择:除选择特定窗口外,您还可以按动作启动程序。这就像大喊“我想要 xyz”,如果安装了支持的应用,它就会启动。典型的例子是启动浏览器——您可能安装了多个浏览器(通常有一个是默认的)。这里您需要手动输入,包名是可选的。注意不会解析变量。例如,如果想启动相机,使用“MediaStore.ACTION_IMAGE_CAPTURE”是不行的。您必须查看 Android 文档并使用此变量的实际值来代替,在本例中为“android.media.action.IMAGE_CAPTURE”。
+ 运行规则时出错。
+ 找不到声音文件 %1$s,无法播放。
+ 添加参数
+ 控制 WireGuard 应用的隧道
+ 选择应用\n的方法
+ 按活动
+ 按动作
+ 输入有效的动作
+ 输入有效的包名。
+ 状态
+ 您可以输入特定的远程电话号码,但不是必填的。若要指定一个号码,可以从通讯录中选择或手动输入。此外,还可以使用正则表达式。要测试正则表达式,建议使用这个页面:
+ 导入配置
+ 导出配置
+ 更多设置
+ 配置导出成功。
+ 导出配置时出错。
+ 规则和位置导入成功。
+ 导入规则和位置时出错。
+ 配置导入成功。
+ 导入设置时出错。
+ 该目录中找不到适用的文件。
+ 无法导入任何文件。
+ 并非所有适用的文件都能导入。
+ 点击导入或导出时,您可以选择导入或导出文件的目录。导出时可能会覆盖现有文件。
+ 如果参数是 Uri 类型,并指定名称为“IntentData”(不区分大小写),则该参数将不会作为普通参数用 putExtra() 添加,而是用 setData() 添加到 Intent 中。
+ 不允许使用字符串 %1$s。
+ 选择启动类型
+ 通过 startActivity()
+ 通过 sendBroadcast()
+ 打开示例网页
+ 包名
+ 活动/动作名称
+ 警告
+ 响铃
+ 从
+ 到
+ 匹配
+ 加载 WLAN 列表
+ 您的设备已连接过的 WLAN 列表可用于确定您去过的地点。因此,加载 WLAN 列表需要位置权限。若要从列表中选择 WLAN,就需要授予该权限。如果不想这样,您仍然可以手动输入 WLAN 名称。
+ 您的设备上没有已知的 WLAN。
+ 此功能不会打开浏览器,而是在后台触发网址。例如可以使用此功能向智能家居发送命令。
+ 检查更新
+ 仅适用于 APK 版本。
+ 有可用更新。要打开浏览器下载吗?
+ 位置已找到。建议的最小半径为 %1$d 米。
+ 只能找到精度有限的位置。可能不太可靠。建议的最小半径为 %1$d。
+ 克隆
+ 无法找到位置,超时时间 %1$s 秒已到。
+ 下一个屏幕中请转到权限 - 位置,选择“始终允许”以允许 Automation 在后台确定您的位置。
+ 振动
+ 测试
+ 输入振动时间,后跟逗号,然后是暂停时间。可以根据需要连接任意数量的振动(同样用逗号分隔)。例如,模式 100,500,500,1000,100 会振动 100、等待 500、振动 500、等待 1000、振动 100 毫秒。如果发现丢掉了一次振动,请尝试增加它之前的暂停。
+ 请输入有效的振动模式。
+ 您愿意在主屏幕上接收有关此应用的新闻吗(仅重要的)?它们是从开发者的网站下载的。不会有侵入性通知,只是打开应用时主屏幕上显示文本。
+ 顶部
+ 底部
+ 标签栏位置
+ 选择标签栏的位置。
+ 因为 Google 又破坏了 Android 的部分功能,从 API 30 开始只能显示当前可见的 WLAN,而不是设备已连接过的所有 WLAN。
+ 注意:在较新的设备上,静音模式通常会触发勿扰。如果您的设备出现这种情况,建议改用正常模式并将所有音量降低为零。
+ 提示音
+ 杂项
+ 勿扰
+ 关闭勿扰
+ 仅限优先事项通知
+ 仅限闹钟
+ 完全阻止
+ 详细设置(如允许通话、选择特定号码等)只能在系统设置更改。
+ 如果不选择特定应用,而是选择“任何应用”,则会忽略来自 Automation 的通知以避免循环。
+ 每 x 秒重复一次
+ 每 %1$s 秒重复一次
+ 请输入正整数的重复时间。
+ 无法读取配置文件的某个元素。该文件可能是由较新的程序版本创建的。
+ 捐赠
+ 此功能已确认在 Android 8.0 之前有效。从某个更高版本开始它就失效了,但是由于缺少物理设备,我不知道是哪个版本。在 Android 11 上它肯定失效了。如果您有两者之间的版本,请告诉我此功能是否有效。
+ 注意
+ 设备方向
+ 公差 (0-180)
+ 方位角:
+ 俯仰角:
+ 倾侧角:
+ 请在所有字段中输入有效数字。
+ 设备移动时以下数字会更新。以下是设备的当前方向(以度为单位)。如果处于所需的方向,请点击应用按钮将当前值复制到所需字段。因为再次达到这个精确方向的可能性很小,所以还必须输入公差。公差是方向可以在两侧偏离的度数。因此 15° 对应 30° 的总角度,两侧各 15°。如果您只关心某个轴,请为其他两个轴指定 180° 的公差。
+ 当前符合吗?
+ 设备处于特定方向
+ 仅允许 2 个公差字段为 180,不允许 3 个均为此值。否则触发器将始终应用。
+ 未知
+ 方向
+ 这个触发器有问题。无法正确加载。
+ 打开或关闭屏幕
+ 打开屏幕
+ 关闭屏幕
+ 必须符合
+ 信号频率
+ 每 x 毫秒接收一次新的运动信号
+ 设备方向设置
+ 设备管理员
+ 您创建的至少 1 条规则需要设备管理员权限。
+ 如果选中该复选框,则要求设备必须处于您指定的方向。如果未选中,任何不符合设定的方向都可接受。
+ 您的规则需要权限,而已安装的 Automation 版本无法请求这些权限。
+ 如果您没有在本程序中使用过发送短信操作,Android 可能会显示一个额外的确认对话框,请求您允许发送消息。如果希望此动作可在后台运行,您需要选中“始终允许”复选框并确认。建议手动运行一次此规则以触发此确认对话框。
+ 从电池优化中排除
+ 推荐,可提高可靠性
+ 需要激活
+ 检查设置
+ 情景模式 %1$s 已激活
+ 情景模式 %1$s 未激活
+ 如果未禁用此复选框,则仅检查所选情景模式是否上次激活。从外部更改任何声音相关设置都没有影响。然而,如果启用此复选框,则当前音频设置确实需要和情景模式中定义的相同。注意:目前尚不支持检查铃声文件。
+ 无法删除此情景模式。规则 %1$s 引用了情景模式 %2$s。
+ 无法删除情景模式。
+ 无重复
+ 使用身份验证
+ 到号码
+ 信息
+ 在星期中的
+ 未设置
+ 自动查找
+ 手动选择
+ 简易模式:Automation 可以尝试自动识别该程序的启动器活动,或者您也可以手动选择该应用的一个活动。您想要怎么做?
+ 无法识别此应用的启动器活动。必须手动选择。
+ 创建通知
+ 输入标题。
+ 输入文本。
+ 信息
+ 此规则使用的情景模式似乎已不存在。已选择按字母顺序排列的第一个。
+ 若不指定任何条件,则此动作将关闭所有通知。因此,建议至少指定应用、标题或文本之一。
+ 关闭通知
+ 比较不区分大小写
+ 此处的设置可能会导致您无法再注意到手机中的某些内容,甚至可以让您的起床闹钟静音。所以无论怎样设置——强烈建议测试,在 Android 更新之后也要再测试。
+ 如果
+ 电子邮件是向我报告错误、提出问题或建议的首选联系方式。前往控制中心了解更多信息。\n许多问题无法立即解答,需要进行一些技术研究。所以请耐心等待。
+ 控制中心
+ 向开发者发送电子邮件
+ 屏幕 %1$s
+ 开启
+ 关闭
+ 解锁
+ 选择所需状态
+ 屏幕状态
+ 由于 Google 的无限智慧,已知可以使用此功能的最后一个 Android 版本是 %1$s。您可以配置它,但它可能没有任何效果。
+ 控制媒体播放
+ 选择命令
+ 切换播放/暂停
+ 播放
+ 暂停
+ 上一个
+ 下一个
+ 控制媒体播放
+ 停止
+ 请选择一个动作!
+ 注意此操作可能不适用于所有播放器。即使适用,也可能不是每个按钮都可用。
+ 音乐播放
+ 选择参数
+ 正在播放音乐
+ 未在播放音乐
+ 音乐播放检测
+ 检测频率 [ms]
+ 检测之间的毫秒数
+ 目前获取位置似乎在 Android 12 设备上无效。如果在你的设备上无效,我很抱歉。我找到原因后会尽快解决。所以如果圆圈不停止旋转,你就知道为什么了。
+ 最后的情景模式:
+ 获取已安装应用列表
+ 如果您使用的时间范围跨过午夜,希望触发器在午夜之后也应用,您还需要选择第二天。
+ 此功能在 Google Play 版本中不再可用。\n\nGoogle 时常欺负开发者。要想继续使用某些功能,就必须提交文件。不幸的是,文件被拒绝的可能性为 99%。这很像 Asterix 漫画/电影中的情况。\n\n以前我花了数周时间与他们争论这类情况,但不断遭到拒绝 - 要么是被机器人拒绝,要么是和机器人同样聪明的人。最后我只能决定是从 Play 商店中完全删除此应用,还是删除此功能。\n如果您需要这些功能,请考虑使用我网站上的 APK 版本或 F-Droid 中的版本。
+ 此限制仅涉及应用选择,不涉及实际启动。因此,如果您知道应用名称,您仍然可以手动输入它。
+ 设备启动
+ 服务启动
+ 设备正在启动
+ 服务正在启动
+ 收到广播
+ 未收到广播
+ 您手机上的大多数事件将通过在整个操作系统中广播来“发布”。\n例如打开/关闭飞行模式将触发这样的广播。这些广播不是自动可见/可听的,但如果某个应用(如 Automation)感兴趣,它可以连接到广播。当广播发生时,它就会收到通知并可以做出反应。\n\n您可以在此处定义应用将等待的广播事件。您可以手动输入,从某处复制粘贴,或从建议列表中选择一个。由于此触发器应该非常灵活,我无法提供有关这些项目的解释。\n\n建议列表并不完整。请访问以下网址查看 Android 文档。\n此外,任何应用都可以发送自定义事件,当然这些事件不会出现在 Android 文档中。\n\n许多广播需要特定权限才能工作。我会尝试在我知道需要的地方请求权限。如果您认为输入的动作需要某个权限,请告诉我。\n\n“未收到”表示自服务启动后尚未收到这种广播。响应某些参数正在开发中。
+ 收到广播
+ 为避免不必要的存储损耗,默认不保存日志。因此,如果您遇到问题,请先在设置中启用日志,并将日志级别设置为 5,然后重现问题。只有这样才能附加日志。
+ 显示建议
+ 选择广播
+ 锁定(仅滑动,无 PIN)
+ 锁定(使用 PIN 等)
+ 任何锁定状态都只能在屏幕关闭时检测到。
+ 如果您想报告错误、提出建议或问题,请在电子邮件中写下内容。不要只给我发送附件和默认邮件正文。除非我们已经在对话中,否则我会忽略这些。
+ 发送广播
+ 输入广播操作。
+ 此动作允许通过 Android 消息系统发送广播。这对用户不可见,但侦听该特定广播的应用可以响应广播发送。
+ 不包含
+ 运行脚本或可执行文件
+ 路径
+ 参数
+ 选择可执行文件
+ 以 root 身份运行
+ 选择有效的可执行文件。
+ 该文件不是可执行文件。
+ 以 Android Q 或更高版本为目标平台的应用无法再打开或关闭 WLAN。请将此限制归咎于 Google,而不是我。您可以通过 root 您的设备并选中下面的复选框来绕过此限制。也可以从 F-Droid 或我的网站下载此应用,因为这些版本不强制以最新的 API 级别为目标平台。
+ 当启用飞行模式时,应用只能使用 root 权限切换 WLAN。
+ 使用 root
+ 您可以在此处选择将作为动作执行的脚本或可执行文件。\n\n但是您必须自己处理一些先决条件。Google 已经让运行常规 Android 应用以外的任何程序变得非常困难。\n\n1. 该脚本需要标记为可执行。在普通的 Android 系统(没有 root)上,这实际上是困难的部分。\n\n2. 这也意味着 Automation 必须能够执行文件,而不仅仅是所有者或组。\n\n3. 如果是脚本,则必须在脚本的标头中指定有效的 shell。\n\n如果无法满足上述要求,您也可以尝试将一个 shell 指定为实际的可执行文件(例如 /system/bin/sh),将脚本作为参数。这对至少一个用户有效。
+ 网络共享已激活
+ 网络共享未激活
+ 网络共享状态
+ 如果选择“等于”,您可以输入正则表达式。
+ 输入一个数字。
+ 持续时间 [ms]
+ 保持设备唤醒
+ 指定超时
+ 启用会保持屏幕打开,停用则允许屏幕关闭。要保持打开状态,可以输入一个持续时间(之后屏幕就可以关闭),也可以无限期保持打开。在后一种情况下,您需要创建另一个保持唤醒操作(在本规则或其他规则中)并选择停用。
+ 此处也可以输入正则表达式。
+ 直接关闭
+ 点击一个按钮
+ 使用按钮 %1$s
+ 子系统状态
+ 蓝牙
+ 要获取 WLAN SSID,应用需要位置权限。由于 Google 版本无法获取该权限,使用此触发器时只能不指定 SSID。因此只能用于检测 WLAN 是否连接。
+ USB
+ 类型
+ 网线
+ 目前无法检测蓝牙网络共享。只有其他连接方式才会激活此触发器。
+ 拨打电话号码
+ 拨打电话号码
+ 此处可以输入一个电话号码,该号码会无提示直接拨打。可以用它来进行如调整呼叫转移等设置。请自行搜索所需的代码。
+ 结束通话
+ 结束通话
+ 设置变量
+ 删除变量
+ 变量名
+ 变量值
+ 如果将变量设置为空值,它将被删除。
+ 输入变量名。
+ 检查变量
+ 如果值留空,则变量必须未设置才能满足条件。
+ 如果变量 %1$s 是 %2$s
+ 如果变量 %1$s 未设置
+ 消息类型
+ 短信
+ 彩信
+ 附件
+ 选择文件
+ 通过 startService()
+ 显示消息框
+ 当规则执行等事件发生时显示消息框
+ 点击“确定”后,选择 Automation,然后选择“授予通知使用权”,然后选择“允许”。\n\n在某些系统上,此设置是灰色的。这种情况下需要前往“设置”->“应用”->“Automation”->3点菜单->解除这些限制。之后返回这里。
+ 显示语言
+ 为应用设置自定义语言
+ 如果触发器使用当前的 WLAN 连接,则也需要此权限。
+ 将文本复制到剪贴板
+ 要复制的文本
+ 显示在其他应用的上层
+ 点击“确定”后,您将转到一个系统对话框。请在其中选择 Automation 并允许“显示在其他应用的上层”。
+ 变量仅适用于 String 和 URI 参数类型
+ 系统默认
+ 英语
+ 德语
+ 意大利语
+ 西班牙语
+ 荷兰语
+ 俄语
+ 法语
+ 波兰语
+ 中文(中国)
+ 若要指定一个参数,还必须点击“添加 Intent 对”,否则更改不会保存。
+
\ No newline at end of file
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index aa39a60..1986faa 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -31,7 +31,8 @@
- @string/languageDutch
- @string/languageRussian
- @string/languageFrench
- - @string/languagePolish
+ - @string/languagePolish
+ - @string/languageChineseChina
@@ -44,6 +45,7 @@
- ru
- fr
- pl
+ - zh_CN
@@ -66,4 +68,5 @@
Russian
French
Polish
+ Chinese (China)
\ No newline at end of file
diff --git a/fastlane/metadata/android/de-DE/changelogs/133.txt b/fastlane/metadata/android/de-DE/changelogs/133.txt
new file mode 100644
index 0000000..8af7be3
--- /dev/null
+++ b/fastlane/metadata/android/de-DE/changelogs/133.txt
@@ -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)
\ No newline at end of file
diff --git a/fastlane/metadata/android/en-US/changelogs/133.txt b/fastlane/metadata/android/en-US/changelogs/133.txt
new file mode 100644
index 0000000..99ed192
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/133.txt
@@ -0,0 +1,4 @@
+* Fixed: [variable-name] was incorrectly replaced with an ] at the end
+* Fixed: Set custom language
+* Fixed: Special characters in making phone call action were not encoded
+* Added: Chinese translation (simplified)
\ No newline at end of file
diff --git a/fastlane/metadata/android/es-ES/changelogs/133.txt b/fastlane/metadata/android/es-ES/changelogs/133.txt
new file mode 100644
index 0000000..59ba430
--- /dev/null
+++ b/fastlane/metadata/android/es-ES/changelogs/133.txt
@@ -0,0 +1,4 @@
+* Corregido: [variable-name] fue reemplazado incorrectamente por un ] al final
+* Corregido: Establecer idioma personalizado
+* Corregido: Los caracteres especiales al realizar la acción de llamada telefónica no estaban codificados
+* Añadido: traducción al chino (simplificada)
\ No newline at end of file
diff --git a/fastlane/metadata/android/fr-FR/changelogs/133.txt b/fastlane/metadata/android/fr-FR/changelogs/133.txt
new file mode 100644
index 0000000..5ea5485
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/133.txt
@@ -0,0 +1,4 @@
+* Correction : [nom_variable] a été remplacé à tort par un ] à la fin
+* Corrigé: Définir la langue personnalisée
+* Correction : les caractères spéciaux dans l'action d'appel téléphonique n'étaient pas codés
+* Ajouté: Traduction chinoise (simplifiée)
\ No newline at end of file
diff --git a/fastlane/metadata/android/it-IT/changelogs/133.txt b/fastlane/metadata/android/it-IT/changelogs/133.txt
new file mode 100644
index 0000000..001d810
--- /dev/null
+++ b/fastlane/metadata/android/it-IT/changelogs/133.txt
@@ -0,0 +1,4 @@
+* Risolto: [nome-variabile] è stato erroneamente sostituito con un ] alla fine
+* Risolto: imposta la lingua personalizzata
+* Risolto: i caratteri speciali nell'effettuare un'azione di chiamata telefonica non sono stati codificati
+* Aggiunto: traduzione cinese (semplificata)
\ No newline at end of file
diff --git a/fastlane/metadata/android/nl-NL/changelogs/133.txt b/fastlane/metadata/android/nl-NL/changelogs/133.txt
new file mode 100644
index 0000000..f0f1dfa
--- /dev/null
+++ b/fastlane/metadata/android/nl-NL/changelogs/133.txt
@@ -0,0 +1,4 @@
+* Opgelost: [variabele-naam] is ten onrechte vervangen door een ] aan het einde
+* Opgelost: Stel aangepaste taal in
+* Opgelost: Speciale tekens bij het maken van telefoongesprek actie waren niet gecodeerd
+* Toegevoegd: Chinese vertaling (vereenvoudigd)
\ No newline at end of file
diff --git a/fastlane/metadata/android/pl-PL/changelogs/133.txt b/fastlane/metadata/android/pl-PL/changelogs/133.txt
new file mode 100644
index 0000000..82f8862
--- /dev/null
+++ b/fastlane/metadata/android/pl-PL/changelogs/133.txt
@@ -0,0 +1,4 @@
+* Naprawiono: [zmienna-nazwa] została niepoprawnie zastąpiona ] na końcu
+* Naprawiono: Ustaw niestandardowy język
+* Naprawiono: Znaki specjalne w wykonywaniu czynności połączenia telefonicznego nie były kodowane
+* Dodano: Chińskie tłumaczenie (uproszczone)
\ No newline at end of file
diff --git a/fastlane/metadata/android/ru-RU/changelogs/133.txt b/fastlane/metadata/android/ru-RU/changelogs/133.txt
new file mode 100644
index 0000000..1cb1dbe
--- /dev/null
+++ b/fastlane/metadata/android/ru-RU/changelogs/133.txt
@@ -0,0 +1,4 @@
+* Исправлено: [имя-переменной] было неправильно заменено на ] в конце
+* Исправлено: Установить пользовательский язык
+* Исправлено: Специальные символы при совершении действия телефонного звонка не кодировались
+* Добавлено: Китайский перевод (упрощенный)
\ No newline at end of file
diff --git a/fastlane/metadata/android/zh-CN/changelogs/133.txt b/fastlane/metadata/android/zh-CN/changelogs/133.txt
new file mode 100644
index 0000000..ce224c4
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/133.txt
@@ -0,0 +1,4 @@
+* 修复:[变量名]末尾被错误地替换为]
+* 修复:设置自定义语言
+* 修复:拨打电话动作时的特殊字符未编码的问题
+* 新增:中文翻译(简体)
\ No newline at end of file
diff --git a/fastlane/metadata/android/zh-CN/full_description.txt b/fastlane/metadata/android/zh-CN/full_description.txt
new file mode 100644
index 0000000..8c3e704
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/full_description.txt
@@ -0,0 +1,64 @@
+创建由触发器和动作组成的规则。典型的例子是“在公司将手机静音”等。
+
+以下是支持的触发器和动作列表:
+
+支持的触发器:
+* 位置
+* 日期/时间
+* 充电状态
+* 电池电量
+* USB 已连接到电脑
+* 您当前的速度
+* 背景噪声(仅 Android 7 以下)
+* WLAN 连接
+* 其他应用运行
+* 飞行模式
+* 漫游状态
+* NFC 标签
+* 蓝牙连接
+* 耳机连接
+* 通话中
+* 其他应用的通知
+* 设备方向(陀螺仪)
+* 情景模式是否激活
+* 其他应用的广播
+* 已设置的变量
+
+支持的动作:
+* 更改 WLAN 状态
+* 更改蓝牙状态
+* 切换 USB 网络共享
+* 切换 WLAN 网络共享
+* 切换蓝牙网络共享
+* 切换自动屏幕旋转
+* 发出 HTTP 请求
+* 更改铃声/声音设置
+* 启动另一个应用
+* 等待(在其他动作之间)
+* 打开或关闭屏幕
+* 切换飞行模式
+* 切换移动数据连接
+* 朗读文字
+* 打开音乐播放器
+* 更改屏幕亮度
+* 发送短信
+* 播放声音文件
+* 创建通知
+* 设置变量
+* 发起通话
+
+保持这个应用在各种不同硬件、Android 版本的大量更改中正常运行是很困难的。我可以在模拟器中测试,但这样不能显示所有的错误。
+因此,如果某个功能无法在您的设备上运行——请告诉我。多年来,我已经修复了几乎所有合理地报告给我的错误。但为此我依赖于您的输入。
+
+如果您有问题并考虑和我联系,请
+- 首先更新到最新版本,看看您的问题是否也存在。
+- 首先检查这个已知问题列表:https://server47.de/automation/index.php#knownProblems
+
+捐赠当然是好事,但不是激励我的唯一方式 :-)
+* 如果您想支持我,您还可以在 Google Play (https://play.google.com/store/apps/details?id=com.jens.automation2) 对这个应用留下好评。
+* 如果您喜欢这个应用,若可以用电子邮件给我发几句友好的话,我将不胜感激。
+* 此外,我随时欢迎您提供翻译应用的帮助。我自己会说英语、德语和一些西班牙语,意大利语和俄语已经完成了。其他所有语言我都非常欢迎。
+* 如果您在平面设计方面有天赋或经验,有一些更好图标的想法,请告诉我。
+* 如果您有一个有趣的用例,或找到了一种方法来组合触发器与动作实现特别的事情,并且您认为值得放在示例页面 (https://server47.de/automation/examples.html) ,请告诉我。
+
+可以在此处找到各个权限的解释:https://server47.de/automation/permissions.php
\ No newline at end of file
diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/1.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/1.png
new file mode 100644
index 0000000..7735fc7
Binary files /dev/null and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/1.png differ
diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/2.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/2.png
new file mode 100644
index 0000000..f5a179f
Binary files /dev/null and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/2.png differ
diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/3.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/3.png
new file mode 100644
index 0000000..335b59d
Binary files /dev/null and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/3.png differ
diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/4.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/4.png
new file mode 100644
index 0000000..f27ac3a
Binary files /dev/null and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/4.png differ
diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/5.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/5.png
new file mode 100644
index 0000000..b0032c4
Binary files /dev/null and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/5.png differ
diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/6.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/6.png
new file mode 100644
index 0000000..e28d6fd
Binary files /dev/null and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/6.png differ
diff --git a/fastlane/metadata/android/zh-CN/short_description.txt b/fastlane/metadata/android/zh-CN/short_description.txt
new file mode 100644
index 0000000..3284f3e
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/short_description.txt
@@ -0,0 +1 @@
+通过创建规则自动化您设备上的事项。
\ No newline at end of file