From 0629d6aa5d6e3160f02daf20c2e93e1224e45cf8 Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Wed, 6 May 2015 22:06:09 +0200 Subject: [PATCH] Small improvements to discovery, only scan for 1min #33 --- .../discovery/DiscoveryActivity.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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 bacdc3d5..57baa940 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/discovery/DiscoveryActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/discovery/DiscoveryActivity.java @@ -9,6 +9,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; +import android.os.Handler; import android.os.Parcelable; import android.util.Log; import android.view.Menu; @@ -31,6 +32,9 @@ import nodomain.freeyourgadget.gadgetbridge.adapter.DeviceCandidateAdapter; public class DiscoveryActivity extends Activity implements AdapterView.OnItemClickListener { private static final String TAG = "DiscoveryAct"; + private static final long SCAN_DURATION = 60000; // 60s + + private Handler handler = new Handler(); private BroadcastReceiver bluetoothReceiver = new BroadcastReceiver() { @Override @@ -52,6 +56,12 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli } } }; + private Runnable stopRunnable = new Runnable() { + @Override + public void run() { + stopDiscovery(); + } + }; private void bluetoothStateChanged(int oldState, int newState) { discoveryFinished(); @@ -164,6 +174,11 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli * Pre: bluetooth is available, enabled and scanning is off */ private void startDiscovery() { + if (isScanning) { + Log.w(TAG, "Not starting BLE discovery, because already scanning."); + return; + } + Log.i(TAG, "Starting discovery..."); discoveryStarted(); // just to make sure if (ensureBluetoothReady()) { @@ -175,8 +190,10 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli } private void stopDiscovery() { + Log.i(TAG, "Stopping discovery"); if (isScanning) { adapter.stopLeScan(leScanCallback); + handler.removeMessages(0, stopRunnable); // unfortunately, we never get a call back when stopping the scan, so // we do it manually: discoveryFinished(); @@ -213,6 +230,8 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli } private void startBLEDiscovery() { + handler.removeMessages(0, stopRunnable); + handler.postDelayed(stopRunnable, SCAN_DURATION); adapter.startLeScan(leScanCallback); }