From c70f5483553f5ff2bddc289ea8b7741bc81c9fbf Mon Sep 17 00:00:00 2001 From: Ravi Nagarajan Date: Fri, 29 Jun 2012 19:24:16 +0530 Subject: [PATCH] Reset the priority on unbond Change-Id: I67b68bd70b947177218e0b908b79ebb9de9f45a8 --- src/com/android/settings/bluetooth/A2dpProfile.java | 6 ++++++ .../android/settings/bluetooth/CachedBluetoothDevice.java | 8 ++++++++ src/com/android/settings/bluetooth/HeadsetProfile.java | 6 ++++++ src/com/android/settings/bluetooth/HidProfile.java | 6 ++++++ .../android/settings/bluetooth/LocalBluetoothProfile.java | 2 ++ src/com/android/settings/bluetooth/OppProfile.java | 4 ++++ src/com/android/settings/bluetooth/PanProfile.java | 5 +++++ 7 files changed, 37 insertions(+) diff --git a/src/com/android/settings/bluetooth/A2dpProfile.java b/src/com/android/settings/bluetooth/A2dpProfile.java index 1f0ddc081f1..3f87b777c42 100755 --- a/src/com/android/settings/bluetooth/A2dpProfile.java +++ b/src/com/android/settings/bluetooth/A2dpProfile.java @@ -151,6 +151,12 @@ final class A2dpProfile implements LocalBluetoothProfile { } } + public void setUnbonded(BluetoothDevice device) + { + if (mService == null) return; + mService.setPriority(device, BluetoothProfile.PRIORITY_UNDEFINED); + } + boolean isA2dpPlaying() { if (mService == null) return false; List sinks = mService.getConnectedDevices(); diff --git a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java index 6fc07a39650..84809872ef7 100755 --- a/src/com/android/settings/bluetooth/CachedBluetoothDevice.java +++ b/src/com/android/settings/bluetooth/CachedBluetoothDevice.java @@ -514,8 +514,16 @@ final class CachedBluetoothDevice implements Comparable { dispatchAttributesChanged(); } + // Clear service priority of Hid, A2DP and Headset profiles on unbond + private void clearProfilePriorities() { + for (LocalBluetoothProfile profile : mProfiles) { + profile.setUnbonded(mDevice); + } + } + void onBondingStateChanged(int bondState) { if (bondState == BluetoothDevice.BOND_NONE) { + clearProfilePriorities(); mProfiles.clear(); mConnectAfterPairing = false; // cancel auto-connect setPhonebookPermissionChoice(PHONEBOOK_ACCESS_UNKNOWN); diff --git a/src/com/android/settings/bluetooth/HeadsetProfile.java b/src/com/android/settings/bluetooth/HeadsetProfile.java index 9e6254d8119..5b73d1ad3c6 100755 --- a/src/com/android/settings/bluetooth/HeadsetProfile.java +++ b/src/com/android/settings/bluetooth/HeadsetProfile.java @@ -167,6 +167,12 @@ final class HeadsetProfile implements LocalBluetoothProfile { } } + public void setUnbonded(BluetoothDevice device) + { + if (mService == null) return; + mService.setPriority(device, BluetoothProfile.PRIORITY_UNDEFINED); + } + public List getConnectedDevices() { if (mService == null) return new ArrayList(0); return mService.getDevicesMatchingConnectionStates( diff --git a/src/com/android/settings/bluetooth/HidProfile.java b/src/com/android/settings/bluetooth/HidProfile.java index c502850ca2c..ba7825270de 100644 --- a/src/com/android/settings/bluetooth/HidProfile.java +++ b/src/com/android/settings/bluetooth/HidProfile.java @@ -118,6 +118,12 @@ final class HidProfile implements LocalBluetoothProfile { } } + public void setUnbonded(BluetoothDevice device) + { + if (mService == null) return; + mService.setPriority(device, BluetoothProfile.PRIORITY_UNDEFINED); + } + public String toString() { return NAME; } diff --git a/src/com/android/settings/bluetooth/LocalBluetoothProfile.java b/src/com/android/settings/bluetooth/LocalBluetoothProfile.java index 8c0de95d94c..65e3a26b42d 100644 --- a/src/com/android/settings/bluetooth/LocalBluetoothProfile.java +++ b/src/com/android/settings/bluetooth/LocalBluetoothProfile.java @@ -47,6 +47,8 @@ interface LocalBluetoothProfile { void setPreferred(BluetoothDevice device, boolean preferred); + void setUnbonded(BluetoothDevice device); + boolean isProfileReady(); /** Display order for device profile settings. */ diff --git a/src/com/android/settings/bluetooth/OppProfile.java b/src/com/android/settings/bluetooth/OppProfile.java index 7ee2ad1b745..86ed0dc0a71 100644 --- a/src/com/android/settings/bluetooth/OppProfile.java +++ b/src/com/android/settings/bluetooth/OppProfile.java @@ -63,6 +63,10 @@ final class OppProfile implements LocalBluetoothProfile { public void setPreferred(BluetoothDevice device, boolean preferred) { } + public void setUnbonded(BluetoothDevice device) { + // Settings app doesn't handle OPP + } + public boolean isProfileReady() { return true; } diff --git a/src/com/android/settings/bluetooth/PanProfile.java b/src/com/android/settings/bluetooth/PanProfile.java index b9db77b2b24..c0da3fe4f59 100644 --- a/src/com/android/settings/bluetooth/PanProfile.java +++ b/src/com/android/settings/bluetooth/PanProfile.java @@ -117,6 +117,11 @@ final class PanProfile implements LocalBluetoothProfile { // ignore: isPreferred is always true for PAN } + public void setUnbonded(BluetoothDevice device) + { + // ignore: PAN profile cannot be disabled + } + public String toString() { return NAME; }