From 753c739998ed4a369042cbe4522004e3263df105 Mon Sep 17 00:00:00 2001 From: jonerlin Date: Sat, 19 Mar 2022 00:31:28 +0800 Subject: Handle SHUTDOWN Intent in BluetoothManagerService Tag: #feature Bug: 207521630 Test: reboot device and check log Change-Id: I9dc8a561fd63545d75a1080402b972cd989c99a6 Merged-In: Ib30a5000ff1be24c276e673d096f67acb64136d6 --- .../server/bluetooth/BluetoothManagerService.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'service/java/com/android/server/bluetooth/BluetoothManagerService.java') diff --git a/service/java/com/android/server/bluetooth/BluetoothManagerService.java b/service/java/com/android/server/bluetooth/BluetoothManagerService.java index d6052aae95..8d248ea93c 100644 --- a/service/java/com/android/server/bluetooth/BluetoothManagerService.java +++ b/service/java/com/android/server/bluetooth/BluetoothManagerService.java @@ -477,6 +477,22 @@ class BluetoothManagerService extends IBluetoothManager.Stub { Slog.i(TAG, "Device disconnected, reactivating pending flag changes"); onInitFlagsChanged(); } + } else if (action.equals(Intent.ACTION_SHUTDOWN)) { + Slog.i(TAG, "Device is shutting down."); + mBluetoothLock.readLock().lock(); + try { + mEnable = false; + mEnableExternal = false; + if (mBluetooth != null && (mState == BluetoothAdapter.STATE_BLE_ON)) { + synchronousOnBrEdrDown(mContext.getAttributionSource()); + } else if (mBluetooth != null && (mState == BluetoothAdapter.STATE_ON)) { + synchronousDisable(mContext.getAttributionSource()); + } + } catch (RemoteException | TimeoutException e) { + Slog.e(TAG, "Unable to shutdown Bluetooth", e); + } finally { + mBluetoothLock.readLock().unlock(); + } } } }; @@ -536,6 +552,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub { filter.addAction(Intent.ACTION_SETTING_RESTORED); filter.addAction(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED); filter.addAction(BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED); + filter.addAction(Intent.ACTION_SHUTDOWN); filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); mContext.registerReceiver(mReceiver, filter); -- cgit v1.2.3