diff options
| author | Henrik Backlund <henrik.backlund@sonyericsson.com> | 2010-08-30 11:59:42 +0200 |
|---|---|---|
| committer | Jaikumar Ganesh <jaikumar@google.com> | 2010-09-09 10:19:55 -0700 |
| commit | 4226415bd9f376c41d85f4cd2e11da59a866d241 (patch) | |
| tree | 7b668d069e7c4ffb472b4a658db538cfc5d5b529 | |
| parent | de2f3340d64e20e51029ff438f0d635d97b8a3e0 (diff) | |
| download | frameworks_base-4226415bd9f376c41d85f4cd2e11da59a866d241.zip frameworks_base-4226415bd9f376c41d85f4cd2e11da59a866d241.tar.gz frameworks_base-4226415bd9f376c41d85f4cd2e11da59a866d241.tar.bz2 | |
Fix to get A2DP to connect after unpairing
In this fix, A2DP profile will be connected when pairing with a
previously paired headset. The reason for this error was that the
connection of the A2DP profile was sent before the callback
onCreatePairedDeviceResult was receied in BluetoothEventLoop.java.
By not going to the state BOND_BONDED until after this callback has been
received, the problem is fixed. However the use case is different if the
pairing is initiated by the remote device. In these cases state
BOND_BONDED will be set when onDevicePropertyChanged instead.
Change-Id: I5dedca87d0a6872705ff3a933a99cce6eb37618a
| -rw-r--r-- | core/java/android/server/BluetoothEventLoop.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java index e1d3f13..094258b 100644 --- a/core/java/android/server/BluetoothEventLoop.java +++ b/core/java/android/server/BluetoothEventLoop.java @@ -404,7 +404,13 @@ class BluetoothEventLoop { mBluetoothService.sendUuidIntent(address); } else if (name.equals("Paired")) { if (propValues[1].equals("true")) { - mBluetoothService.getBondState().setBondState(address, BluetoothDevice.BOND_BONDED); + // If locally initiated pairing, we will + // not go to BOND_BONDED state until we have received a + // successful return value in onCreatePairedDeviceResult + if (null == mBluetoothService.getBondState().getPendingOutgoingBonding()) { + mBluetoothService.getBondState().setBondState(address, + BluetoothDevice.BOND_BONDED); + } } else { mBluetoothService.getBondState().setBondState(address, BluetoothDevice.BOND_NONE); |
