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

Commit 299e6cb9 authored by hughchen's avatar hughchen
Browse files

Update connect() api

Use BluetoothAdapter.connectAllEnabledProfiles() to connect all
individual profile once instead of connect each individual profile.

Fixes: 141582844
Test: manually
Change-Id: I8d58aceed87a2df212d4097362369c60a8ec0c08
Merged-In: I8d58aceed87a2df212d4097362369c60a8ec0c08
parent 31496625
Loading
Loading
Loading
Loading
+21 −35
Original line number Diff line number Diff line
@@ -184,13 +184,28 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
        }
    }

    /**
     * Connect this device.
     *
     * @param connectAllProfiles {@code true} to connect all profile, {@code false} otherwise.
     *
     * @deprecated use {@link #connect()} instead.
     */
    @Deprecated
    public void connect(boolean connectAllProfiles) {
        connect();
    }

    /**
     * Connect this device.
     */
    public void connect() {
        if (!ensurePaired()) {
            return;
        }

        mConnectAttempted = SystemClock.elapsedRealtime();
        connectWithoutResettingTimer(connectAllProfiles);
        connectAllEnabledProfiles();
    }

    public long getHiSyncId() {
@@ -211,10 +226,10 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
    void onBondingDockConnect() {
        // Attempt to connect if UUIDs are available. Otherwise,
        // we will connect when the ACTION_UUID intent arrives.
        connect(false);
        connect();
    }

    private void connectWithoutResettingTimer(boolean connectAllProfiles) {
    private void connectAllEnabledProfiles() {
        synchronized (mProfileLock) {
            // Try to initialize the profiles if they were not.
            if (mProfiles.isEmpty()) {
@@ -229,36 +244,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
                return;
            }

            int preferredProfiles = 0;
            for (LocalBluetoothProfile profile : mProfiles) {
                if (connectAllProfiles ? profile.accessProfileEnabled()
                        : profile.isAutoConnectable()) {
                    if (profile.isPreferred(mDevice)) {
                        ++preferredProfiles;
                        connectInt(profile);
                    }
                }
            }
            if (BluetoothUtils.D) Log.d(TAG, "Preferred profiles = " + preferredProfiles);

            if (preferredProfiles == 0) {
                connectAutoConnectableProfiles();
            }
        }
    }

    private void connectAutoConnectableProfiles() {
        if (!ensurePaired()) {
            return;
        }

        synchronized (mProfileLock) {
            for (LocalBluetoothProfile profile : mProfiles) {
                if (profile.isAutoConnectable()) {
                    profile.setPreferred(mDevice, true);
                    connectInt(profile);
                }
            }
            mLocalAdapter.connectAllEnabledProfiles(mDevice);
        }
    }

@@ -625,7 +611,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
         */
        if (!mProfiles.isEmpty()
                && ((mConnectAttempted + timeout) > SystemClock.elapsedRealtime())) {
            connectWithoutResettingTimer(false);
            connectAllEnabledProfiles();
        }

        dispatchAttributesChanged();
@@ -644,7 +630,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
        refresh();

        if (bondState == BluetoothDevice.BOND_BONDED && mDevice.isBondingInitiatedLocally()) {
            connect(false);
            connect();
        }
    }

+1 −1
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ public class LocalMediaManager implements BluetoothCallback {
            final CachedBluetoothDevice cachedDevice =
                    ((BluetoothMediaDevice) device).getCachedDevice();
            if (!cachedDevice.isConnected() && !cachedDevice.isBusy()) {
                cachedDevice.connect(true);
                cachedDevice.connect();
                return;
            }
        }
+1 −1
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ public class LocalMediaManagerTest {
        mLocalMediaManager.registerCallback(mCallback);
        mLocalMediaManager.connectDevice(device);

        verify(cachedDevice).connect(true);
        verify(cachedDevice).connect();
    }

    @Test