From c5431dfa2c4cff5f4be650c519e36414d6f75f29 Mon Sep 17 00:00:00 2001 From: Erik Johansson Date: Sun, 8 Apr 2018 00:09:55 +0200 Subject: [PATCH] Make it possible to disconnect bluetooth by clicking on the bluetooth button when bluetooth is connected. As requested in #235. --- .../com/health/openscale/core/OpenScale.java | 5 ++++- .../com/health/openscale/gui/MainActivity.java | 16 +++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java index 7d2089c8..b20b66d6 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java +++ b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java @@ -488,11 +488,14 @@ public class OpenScale { return true; } - public void stopSearchingForBluetooth() { + public boolean stopSearchingForBluetooth() { if (btCom != null) { btCom.stopSearching(); + btCom = null; Log.d("OpenScale", "Bluetooth Server explicit stopped!"); + return true; } + return false; } public void registerFragment(FragmentUpdateListener fragment) { diff --git a/android_app/app/src/main/java/com/health/openscale/gui/MainActivity.java b/android_app/app/src/main/java/com/health/openscale/gui/MainActivity.java index ce8958a4..63722c36 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/MainActivity.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/MainActivity.java @@ -430,24 +430,31 @@ public class MainActivity extends BaseAppCompatActivity } private void invokeSearchBluetoothDevice() { - if (OpenScale.getInstance(getApplicationContext()).getSelectedScaleUserId() == -1) { + final OpenScale openScale = OpenScale.getInstance(getApplicationContext()); + + if (openScale.getSelectedScaleUserId() == -1) { showNoSelectedUserDialog(); return; } + if (openScale.stopSearchingForBluetooth()) { + setBluetoothStatusIcon(R.drawable.ic_bluetooth_disabled); + return; + } + String deviceName = prefs.getString("btDeviceName", "-"); boolean permGrantedCoarseLocation = false; // Check if Bluetooth 4.x is available - if (deviceName != "openScale_MCU") { + if (!deviceName.equals("openScale_MCU")) { permGrantedCoarseLocation = PermissionHelper.requestBluetoothPermission(this, false); } else { permGrantedCoarseLocation = PermissionHelper.requestBluetoothPermission(this, true); } if (permGrantedCoarseLocation) { - if (deviceName == "-") { + if (deviceName.equals("-")) { Toast.makeText(getApplicationContext(), getResources().getString(R.string.info_bluetooth_no_device_set), Toast.LENGTH_SHORT).show(); return; } @@ -455,8 +462,7 @@ public class MainActivity extends BaseAppCompatActivity Toast.makeText(getApplicationContext(), getResources().getString(R.string.info_bluetooth_try_connection) + " " + deviceName, Toast.LENGTH_SHORT).show(); setBluetoothStatusIcon(R.drawable.ic_bluetooth_searching); - OpenScale.getInstance(getApplicationContext()).stopSearchingForBluetooth(); - if (!OpenScale.getInstance(getApplicationContext()).startSearchingForBluetooth(deviceName, callbackBtHandler)) { + if (!openScale.startSearchingForBluetooth(deviceName, callbackBtHandler)) { Toast.makeText(getApplicationContext(), deviceName + " " + getResources().getString(R.string.label_bt_device_no_support), Toast.LENGTH_SHORT).show(); } }