Merge "Catch the exception when ble startScan" into tm-qpr-dev

This commit is contained in:
Evan Chen
2022-09-30 15:47:24 +00:00
committed by Android (Google) Code Review

View File

@@ -184,13 +184,21 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
@MainThread
private void startScan() {
enforceInitialized();
// This method should not be called if scan is already in progress.
if (mScanning) throw new IllegalStateException("Scan is already in progress.");
// Neither should this method be called if the adapter is not available.
if (mBleScanner == null) throw new IllegalStateException("BLE is not available.");
if (DEBUG) Log.i(TAG, "startScan()");
// This method should not be called if scan is already in progress.
if (mScanning) {
Slog.w(TAG, "Scan is already in progress.");
return;
}
// Neither should this method be called if the adapter is not available.
if (mBleScanner == null) {
Slog.w(TAG, "BLE is not available.");
return;
}
// Collect MAC addresses from all associations.
final Set<String> macAddresses = new HashSet<>();
for (AssociationInfo association : mAssociationStore.getAssociations()) {
@@ -221,8 +229,18 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
filters.add(filter);
}
mBleScanner.startScan(filters, SCAN_SETTINGS, mScanCallback);
mScanning = true;
// BluetoothLeScanner will throw an IllegalStateException if startScan() is called while LE
// is not enabled.
if (mBtAdapter.isLeEnabled()) {
try {
mBleScanner.startScan(filters, SCAN_SETTINGS, mScanCallback);
mScanning = true;
} catch (IllegalStateException e) {
Slog.w(TAG, "Exception while starting BLE scanning", e);
}
} else {
Slog.w(TAG, "BLE scanning is not turned on");
}
}
private void stopScanIfNeeded() {
@@ -240,11 +258,11 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener {
if (mBtAdapter.isLeEnabled()) {
try {
mBleScanner.stopScan(mScanCallback);
} catch (RuntimeException e) {
// Just to be sure not to crash system server here if BluetoothLeScanner throws
// another RuntimeException.
} catch (IllegalStateException e) {
Slog.w(TAG, "Exception while stopping BLE scanning", e);
}
} else {
Slog.w(TAG, "BLE scanning is not turned on");
}
mScanning = false;