From c926c85dd0fb16f006d281cc58f414cd71340959 Mon Sep 17 00:00:00 2001 From: jens Date: Thu, 13 May 2021 18:37:34 +0200 Subject: [PATCH] Phone Listener changed. --- .../java/com/jens/automation2/Rule.java | 17 ++++++----- .../ActivityManageActionTriggerUrl.java | 2 +- .../jens/automation2/ActivityManagePoi.java | 2 +- .../automation2/ActivityManageProfile.java | 2 +- .../jens/automation2/ActivityManageRule.java | 7 +++-- .../ActivityManageTriggerBluetooth.java | 2 +- .../ActivityManageTriggerNotification.java | 2 +- .../ActivityManageTriggerTimeFrame.java | 2 +- .../jens/automation2/ActivityPermissions.java | 28 +++++++++++++++++-- .../automation2/ActivityTriggerPhoneCall.java | 2 +- .../receivers/PhoneStatusListener.java | 13 +++++---- ... => activity_manage_action_url_editor.xml} | 0 ...i.xml => activity_manage_specific_poi.xml} | 0 ...l => activity_manage_specific_profile.xml} | 0 ... => activity_manage_trigger_bluetooth.xml} | 0 ... activity_manage_trigger_notification.xml} | 0 ...=> activity_manage_trigger_phone_call.xml} | 0 ... => activity_manage_trigger_timeframe.xml} | 0 app/src/main/res/values/strings.xml | 4 ++- 19 files changed, 59 insertions(+), 24 deletions(-) rename app/src/main/res/layout/{trigger_url_editor.xml => activity_manage_action_url_editor.xml} (100%) rename app/src/main/res/layout/{manage_specific_poi.xml => activity_manage_specific_poi.xml} (100%) rename app/src/main/res/layout/{manage_specific_profile.xml => activity_manage_specific_profile.xml} (100%) rename app/src/main/res/layout/{activity_bluetooth_trigger.xml => activity_manage_trigger_bluetooth.xml} (100%) rename app/src/main/res/layout/{manage_trigger_notification.xml => activity_manage_trigger_notification.xml} (100%) rename app/src/main/res/layout/{trigger_phone_call.xml => activity_manage_trigger_phone_call.xml} (100%) rename app/src/main/res/layout/{manage_trigger_timeframe.xml => activity_manage_trigger_timeframe.xml} (100%) diff --git a/app/src/apkFlavor/java/com/jens/automation2/Rule.java b/app/src/apkFlavor/java/com/jens/automation2/Rule.java index 35690636..1472c5d5 100644 --- a/app/src/apkFlavor/java/com/jens/automation2/Rule.java +++ b/app/src/apkFlavor/java/com/jens/automation2/Rule.java @@ -220,7 +220,7 @@ public class Rule implements Comparable private boolean checkBeforeSaving(Context context, boolean changeExistingRule) { - if(this.getName() == null | this.getName().length()==0) + if(this.getName() == null || this.getName().length()==0) { Toast.makeText(context, context.getResources().getString(R.string.pleaseEnterValidName), Toast.LENGTH_LONG).show(); return false; @@ -415,13 +415,13 @@ public class Rule implements Comparable && Miscellaneous.compareTimes(nowTime, oneTrigger.getTimeFrame().getTriggerTimeStop()) > 0 ) - | + || // Other case, start time higher than end time, timeframe goes over midnight ( Miscellaneous.compareTimes(oneTrigger.getTimeFrame().getTriggerTimeStart(), oneTrigger.getTimeFrame().getTriggerTimeStop()) < 0 && (Miscellaneous.compareTimes(oneTrigger.getTimeFrame().getTriggerTimeStart(), nowTime) >= 0 - | + || Miscellaneous.compareTimes(nowTime, oneTrigger.getTimeFrame().getTriggerTimeStop()) > 0) ) @@ -601,11 +601,11 @@ public class Rule implements Comparable } else if(oneTrigger.getTriggerType().equals(Trigger.Trigger_Enum.phoneCall)) { - if(oneTrigger.getPhoneNumber().equals("any") | oneTrigger.getPhoneNumber().equals(PhoneStatusListener.getLastPhoneNumber())) + if(oneTrigger.getPhoneNumber().equals("any") || PhoneStatusListener.getLastPhoneNumber().matches(oneTrigger.getPhoneNumber())) { if(PhoneStatusListener.isInACall() == oneTrigger.getTriggerParameter()) { - if(oneTrigger.getPhoneDirection() == 0 | (oneTrigger.getPhoneDirection() == PhoneStatusListener.getLastPhoneDirection())) + if(oneTrigger.getPhoneDirection() == 0 || (oneTrigger.getPhoneDirection() == PhoneStatusListener.getLastPhoneDirection())) { // Everything's allright } @@ -622,7 +622,10 @@ public class Rule implements Comparable } } else + { Miscellaneous.logEvent("i", "Rule", "Rule doesn't apply. Wrong phone number. Demanded: " + oneTrigger.getPhoneNumber() + ", got: " + PhoneStatusListener.getLastPhoneNumber(), 4); + return false; + } } else if(oneTrigger.getTriggerType().equals(Trigger.Trigger_Enum.nfcTag)) { @@ -916,7 +919,7 @@ public class Rule implements Comparable boolean notLastActive = getLastActivatedRule() == null || !getLastActivatedRule().equals(Rule.this); boolean doToggle = ruleToggle && isActuallyToggable; - if(notLastActive | force | doToggle) + if(notLastActive || force || doToggle) { String message; if(!doToggle) @@ -1069,7 +1072,7 @@ public class Rule implements Comparable if(oneTrigger.getTimeFrame().getTriggerTimeStart().getTime() > oneTrigger.getTimeFrame().getTriggerTimeStop().getTime()) { Miscellaneous.logEvent("i", "Timeframe search", "Rule goes over midnight.", 5); - if(oneTrigger.getTimeFrame().getTriggerTimeStart().getTime() <= searchTime.getTime() | searchTime.getTime() <= oneTrigger.getTimeFrame().getTriggerTimeStop().getTime()+20000) //add 20 seconds because of delay + if(oneTrigger.getTimeFrame().getTriggerTimeStart().getTime() <= searchTime.getTime() || searchTime.getTime() <= oneTrigger.getTimeFrame().getTriggerTimeStop().getTime()+20000) //add 20 seconds because of delay { ruleCandidates.add(oneRule); break innerloop; //if the poi is found we don't need to search the other triggers in the same rule diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionTriggerUrl.java b/app/src/main/java/com/jens/automation2/ActivityManageActionTriggerUrl.java index 66a766cb..6b57cdc4 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageActionTriggerUrl.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageActionTriggerUrl.java @@ -39,7 +39,7 @@ public class ActivityManageActionTriggerUrl extends Activity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - this.setContentView(R.layout.trigger_url_editor); + this.setContentView(R.layout.activity_manage_action_url_editor); etTriggerUrl = (EditText)findViewById(R.id.etTriggerUrl); etTriggerUrlUsername = (EditText)findViewById(R.id.etTriggerUrlUsername); diff --git a/app/src/main/java/com/jens/automation2/ActivityManagePoi.java b/app/src/main/java/com/jens/automation2/ActivityManagePoi.java index dfcea7e1..4cc03329 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManagePoi.java +++ b/app/src/main/java/com/jens/automation2/ActivityManagePoi.java @@ -47,7 +47,7 @@ public class ActivityManagePoi extends Activity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - this.setContentView(R.layout.manage_specific_poi); + this.setContentView(R.layout.activity_manage_specific_poi); myLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); bGetPosition = (Button)findViewById(R.id.bGetPosition); diff --git a/app/src/main/java/com/jens/automation2/ActivityManageProfile.java b/app/src/main/java/com/jens/automation2/ActivityManageProfile.java index 74228e29..4d707f2e 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageProfile.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageProfile.java @@ -82,7 +82,7 @@ public class ActivityManageProfile extends Activity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - this.setContentView(R.layout.manage_specific_profile); + this.setContentView(R.layout.activity_manage_specific_profile); checkBoxChangeSoundMode = (CheckBox)findViewById(R.id.checkBoxChangeSoundMode); checkBoxChangeVolumeMusicVideoGameMedia = (CheckBox)findViewById(R.id.checkBoxChangeVolumeMusicVideoGameMedia); diff --git a/app/src/main/java/com/jens/automation2/ActivityManageRule.java b/app/src/main/java/com/jens/automation2/ActivityManageRule.java index c9f0e539..1dff3c49 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageRule.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageRule.java @@ -1396,13 +1396,16 @@ public class ActivityManageRule extends Activity { newAction.setAction(Action_Enum.setUsbTethering); if(Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD_MR1) - Toast.makeText(context, context.getResources().getString(R.string.usbTetheringFailForAboveGingerbread), Toast.LENGTH_LONG).show(); + Miscellaneous.messageBox(context.getResources().getString(R.string.warning), context.getResources().getString(R.string.usbTetheringFailForAboveGingerbread), context).show(); getActionParameter1Dialog(ActivityManageRule.this).show(); } else if(Action.getActionTypesAsArray()[which].toString().equals(Action_Enum.setWifiTethering.toString())) { newAction.setAction(Action_Enum.setWifiTethering); - getActionParameter1Dialog(ActivityManageRule.this).show(); + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) + Miscellaneous.messageBox(context.getResources().getString(R.string.warning), context.getResources().getString(R.string.wifiTetheringFailForAboveNougat), context).show(); + else + getActionParameter1Dialog(ActivityManageRule.this).show(); } else if(Action.getActionTypesAsArray()[which].toString().equals(Action_Enum.setDisplayRotation.toString())) { diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java index 2bdd6563..dba114e7 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerBluetooth.java @@ -29,7 +29,7 @@ public class ActivityManageTriggerBluetooth extends Activity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_bluetooth_trigger); + setContentView(R.layout.activity_manage_trigger_bluetooth); radioAnyBluetoothDevice = (RadioButton)findViewById(R.id.radioAnyBluetoothDevice); radioNoDevice = (RadioButton)findViewById(R.id.radioNoDevice); diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java index 46b75864..4e6c33bb 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerNotification.java @@ -250,7 +250,7 @@ public class ActivityManageTriggerNotification extends Activity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.manage_trigger_notification); + setContentView(R.layout.activity_manage_trigger_notification); etNotificationTitle = (EditText)findViewById(R.id.etNotificationTitle); etNotificationText = (EditText)findViewById(R.id.etNotificationText); diff --git a/app/src/main/java/com/jens/automation2/ActivityManageTriggerTimeFrame.java b/app/src/main/java/com/jens/automation2/ActivityManageTriggerTimeFrame.java index 1a8b54c2..c67edf7f 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageTriggerTimeFrame.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageTriggerTimeFrame.java @@ -27,7 +27,7 @@ public class ActivityManageTriggerTimeFrame extends Activity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.manage_trigger_timeframe); + setContentView(R.layout.activity_manage_trigger_timeframe); startPicker = (TimePicker)findViewById(R.id.tpTimeFrameStart); stopPicker = (TimePicker)findViewById(R.id.tpTimeFrameStop); diff --git a/app/src/main/java/com/jens/automation2/ActivityPermissions.java b/app/src/main/java/com/jens/automation2/ActivityPermissions.java index 00f0b2c9..c3fb0aea 100644 --- a/app/src/main/java/com/jens/automation2/ActivityPermissions.java +++ b/app/src/main/java/com/jens/automation2/ActivityPermissions.java @@ -225,7 +225,15 @@ public class ActivityPermissions extends Activity } ActivityMainScreen.updateMainScreen(); - ActivityMainRules.getInstance().updateListView(); + + try + { + ActivityMainRules.getInstance().updateListView(); + } + catch (IllegalStateException e) + { + // Activity may not have been loaded, yet. + } } protected static void addToArrayListUnique(String value, ArrayList list) @@ -538,6 +546,13 @@ public class ActivityPermissions extends Activity addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions); addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions); addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions); + + /* + https://stackoverflow.com/questions/46284914/how-to-enable-android-o-wifi-hotspot-programmatically + Unfortunately when requesting this permission it will be rejected automatically. + */ +// if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) +// addToArrayListUnique("android.permission.TETHER_PRIVILEGED", requiredPermissions); break; case speakText: break; @@ -1088,7 +1103,16 @@ public class ActivityPermissions extends Activity NotificationManager mNotificationManager = (NotificationManager) Miscellaneous.getAnyContext().getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.cancel(notificationIdPermissions); ActivityMainScreen.updateMainScreen(); - ActivityMainRules.getInstance().updateListView(); + + try + { + ActivityMainRules.getInstance().updateListView(); + } + catch (IllegalStateException e) + { + // Activity may not have been loaded, yet. + } + this.finish(); } diff --git a/app/src/main/java/com/jens/automation2/ActivityTriggerPhoneCall.java b/app/src/main/java/com/jens/automation2/ActivityTriggerPhoneCall.java index 8611bc08..1ff96fa9 100644 --- a/app/src/main/java/com/jens/automation2/ActivityTriggerPhoneCall.java +++ b/app/src/main/java/com/jens/automation2/ActivityTriggerPhoneCall.java @@ -11,6 +11,6 @@ public class ActivityTriggerPhoneCall extends Activity protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.trigger_phone_call); + setContentView(R.layout.activity_manage_trigger_phone_call); } } diff --git a/app/src/main/java/com/jens/automation2/receivers/PhoneStatusListener.java b/app/src/main/java/com/jens/automation2/receivers/PhoneStatusListener.java index 16f7671a..b49ced43 100644 --- a/app/src/main/java/com/jens/automation2/receivers/PhoneStatusListener.java +++ b/app/src/main/java/com/jens/automation2/receivers/PhoneStatusListener.java @@ -4,6 +4,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.telecom.Call; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; @@ -128,8 +129,8 @@ public class PhoneStatusListener implements AutomationListenerInterface // return false; // case 0: // return false; -// case 1: -// return true; + case 1: + return true; case 2: return true; // case 3: @@ -166,10 +167,10 @@ public class PhoneStatusListener implements AutomationListenerInterface return false; } - + private static void setCurrentStateIncoming(int state) { -// Miscellaneous.logEvent("i", "Call state", "New incoming call state: " + String.valueOf(state), 4); + Miscellaneous.logEvent("i", "Call state", "New incoming call state: " + String.valueOf(state), 4); if(currentStateIncoming != state) { if(lastPhoneDirection != 1) @@ -177,8 +178,10 @@ public class PhoneStatusListener implements AutomationListenerInterface if( (state == 0 && currentStateIncoming == 2) - | + || (state == 2 && (currentStateIncoming == 0 | currentStateIncoming == 1)) + || + state == 1 // this will enable incoming calls that have not been answered, yet, so when they are still only ringing ) { currentStateIncoming = state; diff --git a/app/src/main/res/layout/trigger_url_editor.xml b/app/src/main/res/layout/activity_manage_action_url_editor.xml similarity index 100% rename from app/src/main/res/layout/trigger_url_editor.xml rename to app/src/main/res/layout/activity_manage_action_url_editor.xml diff --git a/app/src/main/res/layout/manage_specific_poi.xml b/app/src/main/res/layout/activity_manage_specific_poi.xml similarity index 100% rename from app/src/main/res/layout/manage_specific_poi.xml rename to app/src/main/res/layout/activity_manage_specific_poi.xml diff --git a/app/src/main/res/layout/manage_specific_profile.xml b/app/src/main/res/layout/activity_manage_specific_profile.xml similarity index 100% rename from app/src/main/res/layout/manage_specific_profile.xml rename to app/src/main/res/layout/activity_manage_specific_profile.xml diff --git a/app/src/main/res/layout/activity_bluetooth_trigger.xml b/app/src/main/res/layout/activity_manage_trigger_bluetooth.xml similarity index 100% rename from app/src/main/res/layout/activity_bluetooth_trigger.xml rename to app/src/main/res/layout/activity_manage_trigger_bluetooth.xml diff --git a/app/src/main/res/layout/manage_trigger_notification.xml b/app/src/main/res/layout/activity_manage_trigger_notification.xml similarity index 100% rename from app/src/main/res/layout/manage_trigger_notification.xml rename to app/src/main/res/layout/activity_manage_trigger_notification.xml diff --git a/app/src/main/res/layout/trigger_phone_call.xml b/app/src/main/res/layout/activity_manage_trigger_phone_call.xml similarity index 100% rename from app/src/main/res/layout/trigger_phone_call.xml rename to app/src/main/res/layout/activity_manage_trigger_phone_call.xml diff --git a/app/src/main/res/layout/manage_trigger_timeframe.xml b/app/src/main/res/layout/activity_manage_trigger_timeframe.xml similarity index 100% rename from app/src/main/res/layout/manage_trigger_timeframe.xml rename to app/src/main/res/layout/activity_manage_trigger_timeframe.xml diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 69c0ecd1..4de33e77 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -489,7 +489,8 @@ Error writing settings file. Unknown error. No writable folder found to store config file. - This will most likely not work as you\'re above Android 2.3. However you could use wifi tethering instead. + This will most likely not work as you\'re above Android 2.3. If you\'re below Android 7 you could use wifi tethering instead instead. + This will not work anymore as you\'re above Android 7. Using new thread for rule activation. Start new thread for rule activation. New thread @@ -665,5 +666,6 @@ Open webpage with examples Package name Activity/action name + Warning \ No newline at end of file