From abb0ffa87d2ec1568cba41ec78f6749271e4a6cc Mon Sep 17 00:00:00 2001 From: Anna Herrera Date: Thu, 6 Apr 2023 17:36:15 +0000 Subject: [PATCH] Monitor BLE_SCAN_ALWAYS_AVAILABLE setting Check for updates to the Bluetooth scanning setting by montioring BLE_SCAN_ALWAYS_AVAILABLE instead of ACTION_BLE_STATE_CHANGED. Bug: 273547029 Test: Disable main BT setting, disable Bluetooth scanning, verify that CHRE receives a BT setting update, enable Bluetooth scanning, verify that CHRE receives a BT setting update. Test: Disable Bluetooth scanning, disable main BT setting verify that CHRE receives a BT setting update, enable main BT setting, verify that CHRE receives a BT setting update. Change-Id: I147d8632a02d675cbd426108a6099e5dc887b8a7 --- .../location/contexthub/ContextHubService.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubService.java b/services/core/java/com/android/server/location/contexthub/ContextHubService.java index 653b71828c5bb..5f783742bd266 100644 --- a/services/core/java/com/android/server/location/contexthub/ContextHubService.java +++ b/services/core/java/com/android/server/location/contexthub/ContextHubService.java @@ -519,17 +519,24 @@ public class ContextHubService extends IContextHubService.Stub { BroadcastReceiver btReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction()) - || BluetoothAdapter.ACTION_BLE_STATE_CHANGED.equals( - intent.getAction())) { + if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())) { sendBtSettingUpdate(/* forceUpdate= */ false); } } }; IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); - filter.addAction(BluetoothAdapter.ACTION_BLE_STATE_CHANGED); mContext.registerReceiver(btReceiver, filter); + + mContext.getContentResolver().registerContentObserver( + Settings.Global.getUriFor(Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE), + /* notifyForDescendants= */ false, + new ContentObserver(/* handler= */ null) { + @Override + public void onChange(boolean selfChange) { + sendBtSettingUpdate(/* forceUpdate= */ false); + } + }, UserHandle.USER_ALL); } /**