diff options
| -rw-r--r-- | services/core/java/com/android/server/power/ShutdownThread.java | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java index 5eb1bdb88e03..0f61171899c4 100644 --- a/services/core/java/com/android/server/power/ShutdownThread.java +++ b/services/core/java/com/android/server/power/ShutdownThread.java @@ -556,7 +556,7 @@ public final class ShutdownThread extends Thread { Thread t = new Thread() { public void run() { boolean nfcOff; - boolean bluetoothOff; + boolean bluetoothReadyForShutdown; boolean radioOff; final INfcAdapter nfc = @@ -580,15 +580,15 @@ public final class ShutdownThread extends Thread { } try { - bluetoothOff = bluetooth == null || + bluetoothReadyForShutdown = bluetooth == null || bluetooth.getState() == BluetoothAdapter.STATE_OFF; - if (!bluetoothOff) { + if (!bluetoothReadyForShutdown) { Log.w(TAG, "Disabling Bluetooth..."); bluetooth.disable(mContext.getPackageName(), false); // disable but don't persist new state } } catch (RemoteException ex) { Log.e(TAG, "RemoteException during bluetooth shutdown", ex); - bluetoothOff = true; + bluetoothReadyForShutdown = true; } try { @@ -613,14 +613,19 @@ public final class ShutdownThread extends Thread { sInstance.setRebootProgress(status, null); } - if (!bluetoothOff) { + if (!bluetoothReadyForShutdown) { try { - bluetoothOff = bluetooth.getState() == BluetoothAdapter.STATE_OFF; + // BLE only mode can happen when BT is turned off + // We will continue shutting down in such case + bluetoothReadyForShutdown = + bluetooth.getState() == BluetoothAdapter.STATE_OFF || + bluetooth.getState() == BluetoothAdapter.STATE_BLE_TURNING_OFF || + bluetooth.getState() == BluetoothAdapter.STATE_BLE_ON; } catch (RemoteException ex) { Log.e(TAG, "RemoteException during bluetooth shutdown", ex); - bluetoothOff = true; + bluetoothReadyForShutdown = true; } - if (bluetoothOff) { + if (bluetoothReadyForShutdown) { Log.i(TAG, "Bluetooth turned off."); } } @@ -647,7 +652,7 @@ public final class ShutdownThread extends Thread { } } - if (radioOff && bluetoothOff && nfcOff) { + if (radioOff && bluetoothReadyForShutdown && nfcOff) { Log.i(TAG, "NFC, Radio and Bluetooth shutdown complete."); done[0] = true; break; |