summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Backlund <henrik.backlund@sonyericsson.com>2010-08-30 11:59:42 +0200
committerJaikumar Ganesh <jaikumar@google.com>2010-09-09 10:19:55 -0700
commit4226415bd9f376c41d85f4cd2e11da59a866d241 (patch)
tree7b668d069e7c4ffb472b4a658db538cfc5d5b529
parentde2f3340d64e20e51029ff438f0d635d97b8a3e0 (diff)
downloadframeworks_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.java8
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);