From 0fe88274e01352f40abfb4a0fada9db05f82e9ee Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Fri, 5 Aug 2022 15:22:21 +0200 Subject: [PATCH] Fix regression with active auto connect sice multi-device got merged 1) The AutoConnectIntervalReceiver was completely disabled when a device went into WAITING_FOR_RECONNECT state 2) The logic inside AutoConnectIntervalReceiver was broken, so that a timer never got started --- .../service/DeviceCommunicationService.java | 17 ++++++++--------- .../receivers/AutoConnectIntervalReceiver.java | 7 ++++--- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java index f70f62771..e90558292 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java @@ -405,6 +405,9 @@ public class DeviceCommunicationService extends Service implements SharedPrefere mBlueToothConnectReceiver = new BluetoothConnectReceiver(this); registerReceiver(mBlueToothConnectReceiver, new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED)); + mAutoConnectInvervalReceiver= new AutoConnectIntervalReceiver(this); + registerReceiver(mAutoConnectInvervalReceiver, new IntentFilter("GB_RECONNECT")); + if (hasPrefs()) { getPrefs().getPreferences().registerOnSharedPreferenceChangeListener(this); } @@ -1095,10 +1098,6 @@ public class DeviceCommunicationService extends Service implements SharedPrefere mGBAutoFetchReceiver = new GBAutoFetchReceiver(); registerReceiver(mGBAutoFetchReceiver, new IntentFilter("android.intent.action.USER_PRESENT")); } - if (mAutoConnectInvervalReceiver == null) { - mAutoConnectInvervalReceiver= new AutoConnectIntervalReceiver(this); - registerReceiver(mAutoConnectInvervalReceiver, new IntentFilter("GB_RECONNECT")); - } } else { if (mPhoneCallReceiver != null) { unregisterReceiver(mPhoneCallReceiver); @@ -1149,11 +1148,6 @@ public class DeviceCommunicationService extends Service implements SharedPrefere unregisterReceiver(mGBAutoFetchReceiver); mGBAutoFetchReceiver = null; } - if (mAutoConnectInvervalReceiver != null) { - unregisterReceiver(mAutoConnectInvervalReceiver); - mAutoConnectInvervalReceiver.destroy(); - mAutoConnectInvervalReceiver = null; - } } } @@ -1170,6 +1164,11 @@ public class DeviceCommunicationService extends Service implements SharedPrefere setReceiversEnableState(false, false, null, null); // disable BroadcastReceivers unregisterReceiver(mBlueToothConnectReceiver); + mBlueToothConnectReceiver = null; + + unregisterReceiver(mAutoConnectInvervalReceiver); + mAutoConnectInvervalReceiver.destroy(); + mAutoConnectInvervalReceiver = null; for(GBDevice device : getGBDevices()){ try { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/AutoConnectIntervalReceiver.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/AutoConnectIntervalReceiver.java index fe424c4e6..2e3211d91 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/AutoConnectIntervalReceiver.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/receivers/AutoConnectIntervalReceiver.java @@ -63,10 +63,11 @@ public class AutoConnectIntervalReceiver extends BroadcastReceiver { boolean scheduleAutoConnect = false; boolean allDevicesInitialized = true; for(GBDevice device : devices){ - if(!device.isInitialized()){ + if(!device.isInitialized()) { allDevicesInitialized = false; - }else if(device.getState() == GBDevice.State.WAITING_FOR_RECONNECT){ - scheduleAutoConnect = true; + if (device.getState() == GBDevice.State.WAITING_FOR_RECONNECT) { + scheduleAutoConnect = true; + } } }