diff options
author | Zhihai Xu <zhihaixu@google.com> | 2012-10-17 16:32:56 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-10-17 16:32:57 -0700 |
commit | 6ec44ff0642bdca94c12f849552aa101e93313b9 (patch) | |
tree | 7ac2bb17412ace39b42b3ad4b2d92c3c23e8e12e /src | |
parent | 7a1c4cdfae66e8b110de3988e65586871a969c04 (diff) | |
parent | 0b21b3d725935c03a4ca4ab8476da2b0675a53cd (diff) | |
download | packages_apps_settings-6ec44ff0642bdca94c12f849552aa101e93313b9.zip packages_apps_settings-6ec44ff0642bdca94c12f849552aa101e93313b9.tar.gz packages_apps_settings-6ec44ff0642bdca94c12f849552aa101e93313b9.tar.bz2 |
Merge "bluetooth won't turn on after turn Airplane mode off on setting screen on manta(tablet)" into jb-mr1-dev
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/settings/bluetooth/BluetoothEnabler.java | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/src/com/android/settings/bluetooth/BluetoothEnabler.java b/src/com/android/settings/bluetooth/BluetoothEnabler.java index f08e083..87cf4ee 100644 --- a/src/com/android/settings/bluetooth/BluetoothEnabler.java +++ b/src/com/android/settings/bluetooth/BluetoothEnabler.java @@ -37,7 +37,7 @@ import com.android.settings.WirelessSettings; public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeListener { private final Context mContext; private Switch mSwitch; - + private boolean mValidListener; private final LocalBluetoothAdapter mLocalAdapter; private final IntentFilter mIntentFilter; @@ -52,6 +52,7 @@ public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeLis public BluetoothEnabler(Context context, Switch switch_) { mContext = context; mSwitch = switch_; + mValidListener = false; LocalBluetoothManager manager = LocalBluetoothManager.getInstance(context); if (manager == null) { @@ -74,7 +75,10 @@ public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeLis handleStateChanged(mLocalAdapter.getBluetoothState()); mContext.registerReceiver(mReceiver, mIntentFilter); - mSwitch.setOnCheckedChangeListener(this); + synchronized(this) { + mSwitch.setOnCheckedChangeListener(this); + mValidListener = true; + } } public void pause() { @@ -83,20 +87,26 @@ public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeLis } mContext.unregisterReceiver(mReceiver); - mSwitch.setOnCheckedChangeListener(null); + synchronized(this) { + mSwitch.setOnCheckedChangeListener(null); + mValidListener = false; + } } public void setSwitch(Switch switch_) { if (mSwitch == switch_) return; - mSwitch.setOnCheckedChangeListener(null); - mSwitch = switch_; - mSwitch.setOnCheckedChangeListener(this); int bluetoothState = BluetoothAdapter.STATE_OFF; if (mLocalAdapter != null) bluetoothState = mLocalAdapter.getBluetoothState(); boolean isOn = bluetoothState == BluetoothAdapter.STATE_ON; boolean isOff = bluetoothState == BluetoothAdapter.STATE_OFF; - mSwitch.setChecked(isOn); + + synchronized(this) { + mSwitch.setOnCheckedChangeListener(null); + mSwitch = switch_; + mSwitch.setOnCheckedChangeListener(null); + } + setChecked(isOn); mSwitch.setEnabled(isOn || isOff); } @@ -121,19 +131,31 @@ public final class BluetoothEnabler implements CompoundButton.OnCheckedChangeLis mSwitch.setEnabled(false); break; case BluetoothAdapter.STATE_ON: - mSwitch.setChecked(true); + setChecked(true); mSwitch.setEnabled(true); break; case BluetoothAdapter.STATE_TURNING_OFF: mSwitch.setEnabled(false); break; case BluetoothAdapter.STATE_OFF: - mSwitch.setChecked(false); + setChecked(false); mSwitch.setEnabled(true); break; default: - mSwitch.setChecked(false); + setChecked(false); mSwitch.setEnabled(true); } } + + private synchronized void setChecked(boolean isChecked) { + // set listener to null, so onCheckedChanged won't be called + // if the checked status on Switch isn't changed by user click + if (mValidListener) { + mSwitch.setOnCheckedChangeListener(null); + } + mSwitch.setChecked(isChecked); + if (mValidListener) { + mSwitch.setOnCheckedChangeListener(this); + } + } } |