Doc updates, add "wantScan" to BleConnect.java so scan starts
automatically upon grant of permissions or device enable.
This commit is contained in:
parent
7223b8c380
commit
2af636b946
|
@ -31,6 +31,7 @@ public class BleConnect extends Fragment {
|
||||||
BluetoothManager manager;
|
BluetoothManager manager;
|
||||||
BluetoothAdapter adapter;
|
BluetoothAdapter adapter;
|
||||||
Handler handler;
|
Handler handler;
|
||||||
|
boolean wantScan = false;
|
||||||
|
|
||||||
final int PERMISSION_REQUEST = 1;
|
final int PERMISSION_REQUEST = 1;
|
||||||
|
|
||||||
|
@ -45,13 +46,11 @@ public class BleConnect extends Fragment {
|
||||||
Log.d("gio", "BleConnect: onAttach()");
|
Log.d("gio", "BleConnect: onAttach()");
|
||||||
ctx.registerReceiver(receiver, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
|
ctx.registerReceiver(receiver, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
|
||||||
manager = (BluetoothManager) ctx.getSystemService(ctx.BLUETOOTH_SERVICE);
|
manager = (BluetoothManager) ctx.getSystemService(ctx.BLUETOOTH_SERVICE);
|
||||||
Log.d("gio", "BleUtil Enable: adapter");
|
|
||||||
adapter = manager.getAdapter();
|
adapter = manager.getAdapter();
|
||||||
handler = new Handler(ctx.getMainLooper());
|
handler = new Handler(ctx.getMainLooper());
|
||||||
if (!enabled()) {
|
if (!enabled()) {
|
||||||
Log.d("gio", "BleConnect: enabling adapter");
|
Log.d("gio", "BleConnect: enabling adapter");
|
||||||
Intent enableBtIntent = new Intent(adapter.ACTION_REQUEST_ENABLE);
|
Intent enableBtIntent = new Intent(adapter.ACTION_REQUEST_ENABLE);
|
||||||
Log.d("gio", "BleConnect: handler.post");
|
|
||||||
handler.post(new Runnable() {
|
handler.post(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
|
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
|
||||||
|
@ -96,9 +95,13 @@ public class BleConnect extends Fragment {
|
||||||
};
|
};
|
||||||
|
|
||||||
public void scan() {
|
public void scan() {
|
||||||
if (!enabled()) {
|
if (!enabled() || getContext().checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
|
||||||
|
Log.d("gio","BleConnect: scan() not enabled or no permissions, wantScan = true");
|
||||||
|
wantScan = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Log.d("gio","BleConnect: scan() starting scan");
|
||||||
|
wantScan = false;
|
||||||
handler.post(new Runnable() {
|
handler.post(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
adapter.startLeScan(scanCallback);
|
adapter.startLeScan(scanCallback);
|
||||||
|
@ -218,6 +221,9 @@ public class BleConnect extends Fragment {
|
||||||
switch (resultCode) {
|
switch (resultCode) {
|
||||||
case Activity.RESULT_OK: {
|
case Activity.RESULT_OK: {
|
||||||
Log.d("gio", "BleConnect: onActivityResult() -- OK");
|
Log.d("gio", "BleConnect: onActivityResult() -- OK");
|
||||||
|
if (wantScan) {
|
||||||
|
scan();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Activity.RESULT_CANCELED: {
|
case Activity.RESULT_CANCELED: {
|
||||||
|
@ -228,6 +234,28 @@ public class BleConnect extends Fragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRequestPermissionsResult (int requestCode, String[] permissions, int[] grantResults) {
|
||||||
|
Log.d("gio", "BleConnect: onRequestPermissionsResult");
|
||||||
|
if (requestCode == PERMISSION_REQUEST) {
|
||||||
|
boolean granted = true;
|
||||||
|
for (int x : grantResults) {
|
||||||
|
if (x == PackageManager.PERMISSION_DENIED) {
|
||||||
|
granted = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!granted) {
|
||||||
|
Log.d("gio", "BleConnect: permissions not granted");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Log.d("gio", "BleConnect: permissions granted");
|
||||||
|
if (wantScan) {
|
||||||
|
scan();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static private native void installComplete(BleConnect p);
|
static private native void installComplete(BleConnect p);
|
||||||
static private native void updateState(int s);
|
static private native void updateState(int s);
|
||||||
static private native void onScan(String name, String id, int rssi, BluetoothDevice dev);
|
static private native void onScan(String name, String id, int rssi, BluetoothDevice dev);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user