Search in sources :

Example 31 with BluetoothLeScanner

use of android.bluetooth.le.BluetoothLeScanner in project android_packages_apps_Settings by LineageOS.

the class AnomalyActions method doUnoptimizedBleScan.

private static void doUnoptimizedBleScan(Context ctx, long durationMs) {
    ScanSettings scanSettings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();
    // perform ble scanning
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled()) {
        Log.e(TAG, "Device does not support Bluetooth or Bluetooth not enabled");
        return;
    }
    BluetoothLeScanner bleScanner = bluetoothAdapter.getBluetoothLeScanner();
    if (bleScanner == null) {
        Log.e(TAG, "Cannot access BLE scanner");
        return;
    }
    ScanCallback scanCallback = new ScanCallback() {

        @Override
        public void onScanResult(int callbackType, ScanResult result) {
            Log.v(TAG, "called onScanResult");
        }

        @Override
        public void onScanFailed(int errorCode) {
            Log.v(TAG, "called onScanFailed");
        }

        @Override
        public void onBatchScanResults(List<ScanResult> results) {
            Log.v(TAG, "called onBatchScanResults");
        }
    };
    bleScanner.startScan(null, scanSettings, scanCallback);
    try {
        Thread.sleep(durationMs);
    } catch (InterruptedException e) {
        Log.e(TAG, "Thread couldn't sleep for " + durationMs, e);
    }
    bleScanner.stopScan(scanCallback);
}
Also used : ScanSettings(android.bluetooth.le.ScanSettings) BluetoothLeScanner(android.bluetooth.le.BluetoothLeScanner) ScanResult(android.bluetooth.le.ScanResult) ScanCallback(android.bluetooth.le.ScanCallback) List(java.util.List) BluetoothAdapter(android.bluetooth.BluetoothAdapter)

Example 32 with BluetoothLeScanner

use of android.bluetooth.le.BluetoothLeScanner in project android_packages_apps_Settings by crdroidandroid.

the class AnomalyActions method doUnoptimizedBleScan.

private static void doUnoptimizedBleScan(Context ctx, long durationMs) {
    ScanSettings scanSettings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();
    // perform ble scanning
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled()) {
        Log.e(TAG, "Device does not support Bluetooth or Bluetooth not enabled");
        return;
    }
    BluetoothLeScanner bleScanner = bluetoothAdapter.getBluetoothLeScanner();
    if (bleScanner == null) {
        Log.e(TAG, "Cannot access BLE scanner");
        return;
    }
    ScanCallback scanCallback = new ScanCallback() {

        @Override
        public void onScanResult(int callbackType, ScanResult result) {
            Log.v(TAG, "called onScanResult");
        }

        @Override
        public void onScanFailed(int errorCode) {
            Log.v(TAG, "called onScanFailed");
        }

        @Override
        public void onBatchScanResults(List<ScanResult> results) {
            Log.v(TAG, "called onBatchScanResults");
        }
    };
    bleScanner.startScan(null, scanSettings, scanCallback);
    try {
        Thread.sleep(durationMs);
    } catch (InterruptedException e) {
        Log.e(TAG, "Thread couldn't sleep for " + durationMs, e);
    }
    bleScanner.stopScan(scanCallback);
}
Also used : ScanSettings(android.bluetooth.le.ScanSettings) BluetoothLeScanner(android.bluetooth.le.BluetoothLeScanner) ScanResult(android.bluetooth.le.ScanResult) ScanCallback(android.bluetooth.le.ScanCallback) List(java.util.List) BluetoothAdapter(android.bluetooth.BluetoothAdapter)

Example 33 with BluetoothLeScanner

use of android.bluetooth.le.BluetoothLeScanner in project android_packages_apps_Settings by SudaMod.

the class AnomalyActions method doUnoptimizedBleScan.

private static void doUnoptimizedBleScan(Context ctx, long durationMs) {
    ScanSettings scanSettings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();
    // perform ble scanning
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled()) {
        Log.e(TAG, "Device does not support Bluetooth or Bluetooth not enabled");
        return;
    }
    BluetoothLeScanner bleScanner = bluetoothAdapter.getBluetoothLeScanner();
    if (bleScanner == null) {
        Log.e(TAG, "Cannot access BLE scanner");
        return;
    }
    ScanCallback scanCallback = new ScanCallback() {

        @Override
        public void onScanResult(int callbackType, ScanResult result) {
            Log.v(TAG, "called onScanResult");
        }

        @Override
        public void onScanFailed(int errorCode) {
            Log.v(TAG, "called onScanFailed");
        }

        @Override
        public void onBatchScanResults(List<ScanResult> results) {
            Log.v(TAG, "called onBatchScanResults");
        }
    };
    bleScanner.startScan(null, scanSettings, scanCallback);
    try {
        Thread.sleep(durationMs);
    } catch (InterruptedException e) {
        Log.e(TAG, "Thread couldn't sleep for " + durationMs, e);
    }
    bleScanner.stopScan(scanCallback);
}
Also used : ScanSettings(android.bluetooth.le.ScanSettings) BluetoothLeScanner(android.bluetooth.le.BluetoothLeScanner) ScanResult(android.bluetooth.le.ScanResult) ScanCallback(android.bluetooth.le.ScanCallback) List(java.util.List) BluetoothAdapter(android.bluetooth.BluetoothAdapter)

Example 34 with BluetoothLeScanner

use of android.bluetooth.le.BluetoothLeScanner in project android-beacon-library by AltBeacon.

the class BluetoothMedic method runScanTest.

/**
 * Starts up a brief blueooth scan with the intent of seeing if it results in an error condition
 * indicating the bluetooth stack may be in a bad state.
 *
 * If the failure error code matches a pattern known to be associated with a bad bluetooth stack
 * state, then the bluetooth stack is turned off and then back on after a short delay in order
 * to try to recover.
 *
 * @return false if the test indicates a failure indicating a bad state of the bluetooth stack
 */
@SuppressWarnings({ "unused", "WeakerAccess" })
@RequiresApi(21)
public boolean runScanTest(final Context context) {
    initializeWithContext(context);
    this.mScanTestResult = null;
    LogManager.i(TAG, "Starting scan test");
    final long testStartTime = System.currentTimeMillis();
    if (this.mAdapter != null) {
        final BluetoothLeScanner scanner = this.mAdapter.getBluetoothLeScanner();
        final ScanCallback callback = new ScanCallback() {

            public void onScanResult(int callbackType, ScanResult result) {
                super.onScanResult(callbackType, result);
                BluetoothMedic.this.mScanTestResult = true;
                LogManager.i(BluetoothMedic.TAG, "Scan test succeeded");
                try {
                    scanner.stopScan(this);
                }// caught if bluetooth is off here
                 catch (IllegalStateException e) {
                /* do nothing */
                }
            }

            public void onBatchScanResults(List<ScanResult> results) {
                super.onBatchScanResults(results);
            }

            public void onScanFailed(int errorCode) {
                super.onScanFailed(errorCode);
                LogManager.d(BluetoothMedic.TAG, "Sending onScanFailed event");
                BluetoothMedic.this.processMedicAction("onScanFailed", errorCode);
                if (errorCode == 2) {
                    LogManager.w(BluetoothMedic.TAG, "Scan test failed in a way we consider a failure");
                    BluetoothMedic.this.sendScreenNotification("scan failed", "bluetooth not ok");
                    BluetoothMedic.this.mScanTestResult = false;
                } else {
                    LogManager.i(BluetoothMedic.TAG, "Scan test failed in a way we do not consider a failure");
                    BluetoothMedic.this.mScanTestResult = true;
                }
            }
        };
        if (scanner != null) {
            try {
                scanner.startScan(callback);
                while (this.mScanTestResult == null) {
                    LogManager.d(TAG, "Waiting for scan test to complete...");
                    try {
                        Thread.sleep(1000L);
                    } catch (InterruptedException e) {
                    /* do nothing */
                    }
                    if (System.currentTimeMillis() - testStartTime > 5000L) {
                        LogManager.d(TAG, "Timeout running scan test");
                        break;
                    }
                }
                scanner.stopScan(callback);
            } catch (IllegalStateException e) {
                LogManager.d(TAG, "Bluetooth is off.  Cannot run scan test.");
            } catch (NullPointerException e) {
                // Needed to stop a crash caused by internal NPE thrown by Android.  See issue #636
                LogManager.e(TAG, "NullPointerException. Cannot run scan test.", e);
            }
        } else {
            LogManager.d(TAG, "Cannot get scanner");
        }
    }
    LogManager.d(TAG, "scan test complete");
    return this.mScanTestResult == null || this.mScanTestResult;
}
Also used : BluetoothLeScanner(android.bluetooth.le.BluetoothLeScanner) ScanResult(android.bluetooth.le.ScanResult) ScanCallback(android.bluetooth.le.ScanCallback) List(java.util.List) RequiresApi(androidx.annotation.RequiresApi)

Example 35 with BluetoothLeScanner

use of android.bluetooth.le.BluetoothLeScanner in project android_packages_apps_Settings by omnirom.

the class AnomalyActions method doUnoptimizedBleScan.

private static void doUnoptimizedBleScan(Context ctx, long durationMs) {
    ScanSettings scanSettings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();
    // perform ble scanning
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled()) {
        Log.e(TAG, "Device does not support Bluetooth or Bluetooth not enabled");
        return;
    }
    BluetoothLeScanner bleScanner = bluetoothAdapter.getBluetoothLeScanner();
    if (bleScanner == null) {
        Log.e(TAG, "Cannot access BLE scanner");
        return;
    }
    ScanCallback scanCallback = new ScanCallback() {

        @Override
        public void onScanResult(int callbackType, ScanResult result) {
            Log.v(TAG, "called onScanResult");
        }

        @Override
        public void onScanFailed(int errorCode) {
            Log.v(TAG, "called onScanFailed");
        }

        @Override
        public void onBatchScanResults(List<ScanResult> results) {
            Log.v(TAG, "called onBatchScanResults");
        }
    };
    bleScanner.startScan(null, scanSettings, scanCallback);
    try {
        Thread.sleep(durationMs);
    } catch (InterruptedException e) {
        Log.e(TAG, "Thread couldn't sleep for " + durationMs, e);
    }
    bleScanner.stopScan(scanCallback);
}
Also used : ScanSettings(android.bluetooth.le.ScanSettings) BluetoothLeScanner(android.bluetooth.le.BluetoothLeScanner) ScanResult(android.bluetooth.le.ScanResult) ScanCallback(android.bluetooth.le.ScanCallback) List(java.util.List) BluetoothAdapter(android.bluetooth.BluetoothAdapter)

Aggregations

BluetoothLeScanner (android.bluetooth.le.BluetoothLeScanner)35 ScanCallback (android.bluetooth.le.ScanCallback)20 ScanSettings (android.bluetooth.le.ScanSettings)18 ScanResult (android.bluetooth.le.ScanResult)13 ScanFilter (android.bluetooth.le.ScanFilter)11 RequiresPermission (android.annotation.RequiresPermission)10 BluetoothAdapter (android.bluetooth.BluetoothAdapter)9 List (java.util.List)8 ScanRecord (android.bluetooth.le.ScanRecord)5 Message (android.os.Message)5 ParcelUuid (android.os.ParcelUuid)5 RemoteException (android.os.RemoteException)5 ArrayList (java.util.ArrayList)5 UUID (java.util.UUID)5 RequiresApi (androidx.annotation.RequiresApi)4 BluetoothManager (android.bluetooth.BluetoothManager)2 WorkerThread (androidx.annotation.WorkerThread)2 BeaconParser (org.altbeacon.beacon.BeaconParser)1 ScanFilterUtils (org.altbeacon.beacon.service.scanner.ScanFilterUtils)1 Test (org.junit.Test)1