summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sanket Agarwal <sanketa@google.com> 2016-05-19 18:32:21 +0000
committer android-build-merger <android-build-merger@google.com> 2016-05-19 18:32:21 +0000
commit29c7056f2530e7f143a51a6abb24ecec30fbb523 (patch)
tree3634182f746d2399b221e937dffc1fcaf152d610
parent3eb06806429f444fe87b894308681e20e6871c7d (diff)
parent090bf551308e68b1b2a996c959b608cabd025c5c (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-xpackages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java3
-rw-r--r--services/core/java/com/android/server/BluetoothManagerService.java15
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) {