From 1e56e540fa33dda838113ebfdeb5e97a7acb83c8 Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Sun, 18 Oct 2015 01:01:13 +0200 Subject: [PATCH] Remove hardcoded equals("MI") in favor of DeviceCoordintator #136 --- .../activities/ControlCenter.java | 22 ++++++++++++------- .../gadgetbridge/util/DeviceHelper.java | 15 +++++++++++++ 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenter.java index 61eef3d3..51cacc20 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenter.java @@ -26,6 +26,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Set; @@ -297,17 +298,13 @@ public class ControlCenter extends Activity { Toast.makeText(this, R.string.bluetooth_is_disabled_, Toast.LENGTH_SHORT).show(); } else { Set pairedDevices = btAdapter.getBondedDevices(); + DeviceHelper deviceHelper = DeviceHelper.getInstance(); for (BluetoothDevice pairedDevice : pairedDevices) { - DeviceType deviceDeviceType; - if (pairedDevice.getName().indexOf("Pebble") == 0) { - deviceDeviceType = DeviceType.PEBBLE; - } else if (pairedDevice.getName().equals("MI")) { - deviceDeviceType = DeviceType.MIBAND; - } else { + if (isDeviceContainedIn(pairedDevice, availableDevices)) { continue; } - GBDevice device = new GBDevice(pairedDevice.getAddress(), pairedDevice.getName(), deviceDeviceType); - if (!availableDevices.contains(device)) { + GBDevice device = deviceHelper.toSupportedDevice(pairedDevice); + if (device != null) { availableDevices.add(device); } } @@ -345,4 +342,13 @@ public class ControlCenter extends Activity { } mGBDeviceAdapter.notifyDataSetChanged(); } + + private boolean isDeviceContainedIn(BluetoothDevice device, List availableDevices) { + for (GBDevice avail : availableDevices) { + if (avail.getAddress().equals(device.getAddress())) { + return true; + } + } + return false; + } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java index c2ebea51..4f77db3d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/DeviceHelper.java @@ -1,5 +1,7 @@ package nodomain.freeyourgadget.gadgetbridge.util; +import android.bluetooth.BluetoothDevice; + import java.util.ArrayList; import java.util.List; @@ -34,6 +36,19 @@ public class DeviceHelper { return false; } + public GBDevice toSupportedDevice(BluetoothDevice device) { + GBDeviceCandidate candidate = new GBDeviceCandidate(device, GBDevice.RSSI_UNKNOWN); + if (coordinator != null && coordinator.supports(candidate)) { + return new GBDevice(device.getAddress(), device.getName(), coordinator.getDeviceType()); + } + for (DeviceCoordinator coordinator : getAllCoordinators()) { + if (coordinator.supports(candidate)) { + return new GBDevice(device.getAddress(), device.getName(), coordinator.getDeviceType()); + } + } + return null; + } + public DeviceCoordinator getCoordinator(GBDeviceCandidate device) { if (coordinator != null && coordinator.supports(device)) { return coordinator;