summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/power/ShutdownThread.java23
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;