summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsrc/com/android/settings/bluetooth/DeviceProfilesSettings.java18
-rwxr-xr-xsrc/com/android/settings/bluetooth/PanProfile.java3
2 files changed, 12 insertions, 9 deletions
diff --git a/src/com/android/settings/bluetooth/DeviceProfilesSettings.java b/src/com/android/settings/bluetooth/DeviceProfilesSettings.java
index 67d2258..335d888 100755
--- a/src/com/android/settings/bluetooth/DeviceProfilesSettings.java
+++ b/src/com/android/settings/bluetooth/DeviceProfilesSettings.java
@@ -241,7 +241,7 @@ public final class DeviceProfilesSettings extends SettingsPreferenceFragment
mCachedDevice.setName((String) newValue);
} else if (preference instanceof CheckBoxPreference) {
LocalBluetoothProfile prof = getProfileOf(preference);
- onProfileClicked(prof);
+ onProfileClicked(prof, (CheckBoxPreference) preference);
return false; // checkbox will update from onDeviceAttributesChanged() callback
} else {
return false;
@@ -250,7 +250,7 @@ public final class DeviceProfilesSettings extends SettingsPreferenceFragment
return true;
}
- private void onProfileClicked(LocalBluetoothProfile profile) {
+ private void onProfileClicked(LocalBluetoothProfile profile, CheckBoxPreference profilePref) {
BluetoothDevice device = mCachedDevice.getDevice();
int status = profile.getConnectionStatus(device);
@@ -260,8 +260,14 @@ public final class DeviceProfilesSettings extends SettingsPreferenceFragment
if (isConnected) {
askDisconnect(getActivity(), profile);
} else {
- profile.setPreferred(device, true);
- mCachedDevice.connectProfile(profile);
+ if (profile.isPreferred(device)) {
+ // profile is preferred but not connected: disable auto-connect
+ profile.setPreferred(device, false);
+ refreshProfilePreference(profilePref, profile);
+ } else {
+ profile.setPreferred(device, true);
+ mCachedDevice.connectProfile(profile);
+ }
}
}
@@ -357,8 +363,4 @@ public final class DeviceProfilesSettings extends SettingsPreferenceFragment
private void unpairDevice() {
mCachedDevice.unpair();
}
-
- private boolean getAutoConnect(LocalBluetoothProfile prof) {
- return prof.isPreferred(mCachedDevice.getDevice());
- }
}
diff --git a/src/com/android/settings/bluetooth/PanProfile.java b/src/com/android/settings/bluetooth/PanProfile.java
index b9db77b..f6e0691 100755
--- a/src/com/android/settings/bluetooth/PanProfile.java
+++ b/src/com/android/settings/bluetooth/PanProfile.java
@@ -106,7 +106,8 @@ final class PanProfile implements LocalBluetoothProfile {
}
public boolean isPreferred(BluetoothDevice device) {
- return true;
+ // return current connection status so profile checkbox is set correctly
+ return getConnectionStatus(device) == BluetoothProfile.STATE_CONNECTED;
}
public int getPreferred(BluetoothDevice device) {