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);
}
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);
}
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);
}
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;
}
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);
}
Aggregations