Remove hardcoded equals("MI") in favor of DeviceCoordintator #136

here
cpfeiffer 2015-10-18 01:01:13 +02:00
parent 2c29384ee8
commit 1e56e540fa
2 changed files with 29 additions and 8 deletions

View File

@ -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<BluetoothDevice> 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<GBDevice> availableDevices) {
for (GBDevice avail : availableDevices) {
if (avail.getAddress().equals(device.getAddress())) {
return true;
}
}
return false;
}
}

View File

@ -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;