diff --git a/app/build.gradle b/app/build.gradle index bd83c02e..024852de 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 95f7c94e..5f56a241 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 0a6de714..f113e1cf 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 9f29e8f2..9760dffb 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 6e75ee52..5f88e1de 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 2d8a1f73..f205ee7a 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 cca51273..65e73460 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 d49648b3..0232e7f0 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 4b3cef9c..16711e3b 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 bbdf5df1..e77e4a95 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 b4a47966..811171d4 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 8ab2cfe7..f9e8ec22 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 9a86dc6c..b5e75d19 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 c8cf9e98..3c54bc9a 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 d4f8bc41..63c26da2 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 864255a3..21bd238d 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 257c9444..59b6b681 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 966092a7..2f39ff94 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 609a9cc6..fe4409d1 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 aab66a65..57716634 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 f7b0be0c..fcff4680 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 f9e8bd45..8d59b68b 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 ddd1f83f..93b8ae13 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 9a41e210..4f1dc646 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 5eeb51cb..c91549cd 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 01a68d3f..e8767a33 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 38b948f0..0fe79d25 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 990465f3..b6826f29 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 affd7384..ceb53389 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 2795b131..32fda94b 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 20db4704..620664e0 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 6c0888f8..65282ac1 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 901fe637..10623751 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 ef3fb199..449e85cf 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 7f83691b..74df0e08 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 bc93f10a..690751d7 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 56103afd..98c6ecbd 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 365b3da2..a73b50e0 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 6c32db74..ec7c71f0 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 78fd7d6c..51b5b32f 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 f63041c0..0ba52fde 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 5a1abe9e..5b09480a 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 5cd9091b..cb6717e9 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 5fbb2063..8ac0a12c 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 b8977b78..4fce0381 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 3360e846..793e2f40 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 9fb03a4e..b2cedb62 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 82954cda..e33e8191 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 18d5f119..023e6f21 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 f32cbd72..b75925de 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 49ee5c0c..91660891 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 7e4ca678..a5979e46 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 8471877e..8f23869e 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 527b7ede..7d6dcc20 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 55bde3c0..b69e7773 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 00000000..bfc491d7 --- /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 aa39a605..1986faa6 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 00000000..8af7be35 --- /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 00000000..99ed1929 --- /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 00000000..59ba4301 --- /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 00000000..5ea54851 --- /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 00000000..001d810b --- /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 00000000..f0f1dfae --- /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 00000000..82f8862a --- /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 00000000..1cb1dbe2 --- /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 00000000..ce224c4e --- /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 00000000..8c3e7041 --- /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 00000000..7735fc78 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 00000000..f5a179fa 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 00000000..335b59d4 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 00000000..f27ac3a0 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 00000000..b0032c43 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 00000000..e28d6fd9 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 00000000..3284f3e5 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/short_description.txt @@ -0,0 +1 @@ +通过创建规则自动化您设备上的事项。 \ No newline at end of file