Small improvements to discovery, only scan for 1min #33

live-sensor-data
cpfeiffer 2015-05-06 22:06:09 +02:00
parent dbffd5a42f
commit 0629d6aa5d
1 changed files with 19 additions and 0 deletions

View File

@ -9,6 +9,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.Parcelable; import android.os.Parcelable;
import android.util.Log; import android.util.Log;
import android.view.Menu; import android.view.Menu;
@ -31,6 +32,9 @@ import nodomain.freeyourgadget.gadgetbridge.adapter.DeviceCandidateAdapter;
public class DiscoveryActivity extends Activity implements AdapterView.OnItemClickListener { public class DiscoveryActivity extends Activity implements AdapterView.OnItemClickListener {
private static final String TAG = "DiscoveryAct"; private static final String TAG = "DiscoveryAct";
private static final long SCAN_DURATION = 60000; // 60s
private Handler handler = new Handler();
private BroadcastReceiver bluetoothReceiver = new BroadcastReceiver() { private BroadcastReceiver bluetoothReceiver = new BroadcastReceiver() {
@Override @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) { private void bluetoothStateChanged(int oldState, int newState) {
discoveryFinished(); discoveryFinished();
@ -164,6 +174,11 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli
* Pre: bluetooth is available, enabled and scanning is off * Pre: bluetooth is available, enabled and scanning is off
*/ */
private void startDiscovery() { private void startDiscovery() {
if (isScanning) {
Log.w(TAG, "Not starting BLE discovery, because already scanning.");
return;
}
Log.i(TAG, "Starting discovery..."); Log.i(TAG, "Starting discovery...");
discoveryStarted(); // just to make sure discoveryStarted(); // just to make sure
if (ensureBluetoothReady()) { if (ensureBluetoothReady()) {
@ -175,8 +190,10 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli
} }
private void stopDiscovery() { private void stopDiscovery() {
Log.i(TAG, "Stopping discovery");
if (isScanning) { if (isScanning) {
adapter.stopLeScan(leScanCallback); adapter.stopLeScan(leScanCallback);
handler.removeMessages(0, stopRunnable);
// unfortunately, we never get a call back when stopping the scan, so // unfortunately, we never get a call back when stopping the scan, so
// we do it manually: // we do it manually:
discoveryFinished(); discoveryFinished();
@ -213,6 +230,8 @@ public class DiscoveryActivity extends Activity implements AdapterView.OnItemCli
} }
private void startBLEDiscovery() { private void startBLEDiscovery() {
handler.removeMessages(0, stopRunnable);
handler.postDelayed(stopRunnable, SCAN_DURATION);
adapter.startLeScan(leScanCallback); adapter.startLeScan(leScanCallback);
} }