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

Commit 1bc3a407 authored by Jaikumar Ganesh's avatar Jaikumar Ganesh Committed by Android (Google) Code Review
Browse files

Merge "Fix auto connection priority handling." into gingerbread

parents fa3d9557 bcf5cf47
Loading
Loading
Loading
Loading
+8 −13
Original line number Diff line number Diff line
@@ -71,7 +71,6 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub {
    private final BluetoothService mBluetoothService;
    private final BluetoothAdapter mAdapter;
    private int   mTargetA2dpState;
    private boolean mAdjustedPriority = false;

    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
@@ -326,7 +325,10 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub {

        String path = mBluetoothService.getObjectPathFromAddress(device.getAddress());

        // State is DISCONNECTED
        // State is DISCONNECTED and we are connecting.
        if (getSinkPriority(device) < BluetoothA2dp.PRIORITY_AUTO_CONNECT) {
            setSinkPriority(device, BluetoothA2dp.PRIORITY_AUTO_CONNECT);
        }
        handleSinkStateChange(device, state, BluetoothA2dp.STATE_CONNECTING);

        if (!connectSinkNative(path)) {
@@ -491,14 +493,10 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub {
            mTargetA2dpState = -1;

            if (getSinkPriority(device) > BluetoothA2dp.PRIORITY_OFF &&
                    state == BluetoothA2dp.STATE_CONNECTING ||
                    state == BluetoothA2dp.STATE_CONNECTED) {
                // We have connected or attempting to connect.
                // Bump priority
                setSinkPriority(device, BluetoothA2dp.PRIORITY_AUTO_CONNECT);
            }

            if (state == BluetoothA2dp.STATE_CONNECTED) {
                // We will only have 1 device with AUTO_CONNECT priority
                // To be backward compatible set everyone else to have PRIORITY_ON
                adjustOtherSinkPriorities(device);
@@ -515,15 +513,12 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub {
    }

    private void adjustOtherSinkPriorities(BluetoothDevice connectedDevice) {
        if (!mAdjustedPriority) {
        for (BluetoothDevice device : mAdapter.getBondedDevices()) {
            if (getSinkPriority(device) >= BluetoothA2dp.PRIORITY_AUTO_CONNECT &&
                !device.equals(connectedDevice)) {
                setSinkPriority(device, BluetoothA2dp.PRIORITY_ON);
            }
        }
            mAdjustedPriority = true;
        }
    }

    private synchronized Set<BluetoothDevice> lookupSinksMatchingStates(int[] states) {