Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b81c7eff authored by Evan Chen's avatar Evan Chen Committed by Android (Google) Code Review
Browse files

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

parents fa1f2789 b4f64701
Loading
Loading
Loading
Loading
+27 −9
Original line number Diff line number Diff line
@@ -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);
        }

        // 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;