From cf12c78a64520e3c1c42a76763c35c463defb5b5 Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Tue, 5 May 2015 01:08:30 +0200 Subject: [PATCH] Ensure that discovery doesn't display duplicates (#33) --- .../discovery/DeviceCandidate.java | 18 ++++++++++++++++++ .../discovery/DiscoveryActivity.java | 7 ++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/discovery/DeviceCandidate.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/discovery/DeviceCandidate.java index 993b3ea6..5260ae4b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/discovery/DeviceCandidate.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/discovery/DeviceCandidate.java @@ -64,4 +64,22 @@ public class DeviceCandidate implements Parcelable { public int describeContents() { return 0; } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + DeviceCandidate that = (DeviceCandidate) o; + return device.getAddress().equals(that.device.getAddress()); + } + + @Override + public int hashCode() { + return device.getAddress().hashCode() ^ 37; + } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/discovery/DiscoveryActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/discovery/DiscoveryActivity.java index 8d084a88..bacdc3d5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/discovery/DiscoveryActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/discovery/DiscoveryActivity.java @@ -82,7 +82,12 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) { DeviceCandidate candidate = new DeviceCandidate(device, (short) rssi); if (DeviceHelper.getInstance().isSupported(candidate)) { - deviceCandidates.add(candidate); + int index = deviceCandidates.indexOf(candidate); + if (index >= 0) { + deviceCandidates.set(index, candidate); // replace + } else { + deviceCandidates.add(candidate); + } cadidateListAdapter.notifyDataSetChanged(); } }