diff options
| author | 2016-05-19 18:32:21 +0000 | |
|---|---|---|
| committer | 2016-05-19 18:32:21 +0000 | |
| commit | 29c7056f2530e7f143a51a6abb24ecec30fbb523 (patch) | |
| tree | 3634182f746d2399b221e937dffc1fcaf152d610 | |
| parent | 3eb06806429f444fe87b894308681e20e6871c7d (diff) | |
| parent | 090bf551308e68b1b2a996c959b608cabd025c5c (diff) | |
While turning OFF do not honor ON requests.
am: 090bf55130
* commit '090bf551308e68b1b2a996c959b608cabd025c5c':
While turning OFF do not honor ON requests.
Change-Id: I878609e6dfc4e18bdf30e4c14806cb9c2c3d8abf
| -rwxr-xr-x | packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/BluetoothManagerService.java | 15 |
2 files changed, 16 insertions, 2 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java index 9c5abf3a00dd..26836099c9de 100755 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java @@ -208,7 +208,7 @@ public final class LocalBluetoothAdapter { return false; } - public void setBluetoothEnabled(boolean enabled) { + public boolean setBluetoothEnabled(boolean enabled) { boolean success = enabled ? mAdapter.enable() : mAdapter.disable(); @@ -225,6 +225,7 @@ public final class LocalBluetoothAdapter { syncBluetoothState(); } + return success; } public BluetoothDevice getRemoteDevice(String address) { diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java index 0a814ab579d3..5e8687a904c1 100644 --- a/services/core/java/com/android/server/BluetoothManagerService.java +++ b/services/core/java/com/android/server/BluetoothManagerService.java @@ -613,7 +613,20 @@ class BluetoothManagerService extends IBluetoothManager.Stub { "Need BLUETOOTH ADMIN permission"); if (DBG) { Slog.d(TAG,"enable(): mBluetooth =" + mBluetooth + - " mBinding = " + mBinding); + " mBinding = " + mBinding + " mState = " + mState); + } + // We do not honor ON requests when the adapter is already turned ON or in the process of + // turning ON. + // As a protective mechanism to make sure that the native stack gets cleaned up properly + // before turning it back ON we ignore requests while the bluetooth is turning OFF. + // Bug: b/28318203 + if (mState == BluetoothAdapter.STATE_BLE_TURNING_OFF || + mState == BluetoothAdapter.STATE_TURNING_OFF || + mState == BluetoothAdapter.STATE_ON || + mState == BluetoothAdapter.STATE_BLE_ON || + mState == BluetoothAdapter.STATE_TURNING_ON || + mState == BluetoothAdapter.STATE_BLE_TURNING_ON) { + return false; } synchronized(mReceiver) { |