diff options
| author | Michael Chan <mchan@android.com> | 2010-04-23 10:46:43 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-04-23 10:46:43 -0700 |
| commit | 6368b25c09992172b1900da3fd326c4fd2fdd203 (patch) | |
| tree | 95716adaec7e16b40219a7b1c9563b682d040db8 /src/com | |
| parent | b99e029db14ae276a47da39da9378b6af9aef403 (diff) | |
| parent | 96b0c1dc0813f7e8c957ec17dc7751693926c6ae (diff) | |
| download | packages_apps_Settings-6368b25c09992172b1900da3fd326c4fd2fdd203.zip packages_apps_Settings-6368b25c09992172b1900da3fd326c4fd2fdd203.tar.gz packages_apps_Settings-6368b25c09992172b1900da3fd326c4fd2fdd203.tar.bz2 | |
Merge "b/2608693 Fix the problem where BT was automatically reconnecting ... after the user unpaired while docked." into froyo
Diffstat (limited to 'src/com')
| -rw-r--r-- | src/com/android/settings/bluetooth/CachedBluetoothDevice.java | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java index 57bffa9..acc8551 100644 --- a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java +++ b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java @@ -95,7 +95,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> private static final long MAX_WAIT_TIME_FOR_FRAMEWORK = 25 * 1000; private enum BluetoothCommand { - CONNECT, DISCONNECT, + CONNECT, DISCONNECT, REMOVE_BOND, } static class BluetoothJob { @@ -118,7 +118,9 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> StringBuilder sb = new StringBuilder(); sb.append(command.name()); sb.append(" Address:").append(cachedDevice.mDevice); - sb.append(" Profile:").append(profile.name()); + if (profile != null) { + sb.append(" Profile:").append(profile.name()); + } sb.append(" TimeSent:"); if (timeSent == 0) { sb.append("not yet"); @@ -210,6 +212,12 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> case DISCONNECT: successful = disconnectInt(job.cachedDevice, job.profile); break; + case REMOVE_BOND: + BluetoothDevice dev = job.cachedDevice.getDevice(); + if (dev != null) { + successful = dev.removeBond(); + } + break; } if (successful) { @@ -510,32 +518,16 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> } public void unpair() { - synchronized (workQueue) { - // Remove any pending commands for this device - boolean processNow = false; - Iterator<BluetoothJob> it = workQueue.iterator(); - while (it.hasNext()) { - BluetoothJob job = it.next(); - if (job.cachedDevice.mDevice.equals(this.mDevice)) { - it.remove(); - if (job.timeSent != 0) { - processNow = true; - } - } - } - if (processNow) { - processCommands(); - } - } + disconnect(); - switch (getBondState()) { - case BluetoothDevice.BOND_BONDED: - mDevice.removeBond(); - break; + int state = getBondState(); - case BluetoothDevice.BOND_BONDING: + if (state == BluetoothDevice.BOND_BONDING) { mDevice.cancelBondProcess(); - break; + } + + if (state != BluetoothDevice.BOND_NONE) { + queueCommand(new BluetoothJob(BluetoothCommand.REMOVE_BOND, this, null)); } } |
