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
This commit is contained in:
Anna Herrera
2023-04-06 17:36:15 +00:00
parent f3bbc7779b
commit abb0ffa87d

View File

@@ -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);
}
/**