Loading services/core/java/com/android/server/BluetoothManagerService.java +24 −2 Original line number Diff line number Diff line Loading @@ -2505,6 +2505,16 @@ class BluetoothManagerService extends IBluetoothManager.Stub { mContext.sendBroadcastAsUser(intent, UserHandle.ALL, null, getTempAllowlistBroadcastOptions()); } private boolean isBleState(int state) { switch (state) { case BluetoothAdapter.STATE_BLE_ON: case BluetoothAdapter.STATE_BLE_TURNING_ON: case BluetoothAdapter.STATE_BLE_TURNING_OFF: return true; } return false; } @RequiresPermission(allOf = { android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED, Loading @@ -2527,8 +2537,15 @@ class BluetoothManagerService extends IBluetoothManager.Stub { sendBluetoothServiceDownCallback(); unbindAndFinish(); sendBleStateChanged(prevState, newState); // Don't broadcast as it has already been broadcast before isStandardBroadcast = false; /* Currently, the OFF intent is broadcasted externally only when we transition * from TURNING_OFF to BLE_ON state. So if the previous state is a BLE state, * we are guaranteed that the OFF intent has been broadcasted earlier and we * can safely skip it. * Conversely, if the previous state is not a BLE state, it indicates that some * sort of crash has occurred, moving us directly to STATE_OFF without ever * passing through BLE_ON. We should broadcast the OFF intent in this case. */ isStandardBroadcast = !isBleState(prevState); } else if (!intermediate_off) { // connect to GattService Loading Loading @@ -2581,6 +2598,11 @@ class BluetoothManagerService extends IBluetoothManager.Stub { // Show prevState of BLE_ON as OFF to standard users prevState = BluetoothAdapter.STATE_OFF; } if (DBG) { Slog.d(TAG, "Sending State Change: " + BluetoothAdapter.nameForState(prevState) + " > " + BluetoothAdapter.nameForState(newState)); } Intent intent = new Intent(BluetoothAdapter.ACTION_STATE_CHANGED); intent.putExtra(BluetoothAdapter.EXTRA_PREVIOUS_STATE, prevState); intent.putExtra(BluetoothAdapter.EXTRA_STATE, newState); Loading Loading
services/core/java/com/android/server/BluetoothManagerService.java +24 −2 Original line number Diff line number Diff line Loading @@ -2505,6 +2505,16 @@ class BluetoothManagerService extends IBluetoothManager.Stub { mContext.sendBroadcastAsUser(intent, UserHandle.ALL, null, getTempAllowlistBroadcastOptions()); } private boolean isBleState(int state) { switch (state) { case BluetoothAdapter.STATE_BLE_ON: case BluetoothAdapter.STATE_BLE_TURNING_ON: case BluetoothAdapter.STATE_BLE_TURNING_OFF: return true; } return false; } @RequiresPermission(allOf = { android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED, Loading @@ -2527,8 +2537,15 @@ class BluetoothManagerService extends IBluetoothManager.Stub { sendBluetoothServiceDownCallback(); unbindAndFinish(); sendBleStateChanged(prevState, newState); // Don't broadcast as it has already been broadcast before isStandardBroadcast = false; /* Currently, the OFF intent is broadcasted externally only when we transition * from TURNING_OFF to BLE_ON state. So if the previous state is a BLE state, * we are guaranteed that the OFF intent has been broadcasted earlier and we * can safely skip it. * Conversely, if the previous state is not a BLE state, it indicates that some * sort of crash has occurred, moving us directly to STATE_OFF without ever * passing through BLE_ON. We should broadcast the OFF intent in this case. */ isStandardBroadcast = !isBleState(prevState); } else if (!intermediate_off) { // connect to GattService Loading Loading @@ -2581,6 +2598,11 @@ class BluetoothManagerService extends IBluetoothManager.Stub { // Show prevState of BLE_ON as OFF to standard users prevState = BluetoothAdapter.STATE_OFF; } if (DBG) { Slog.d(TAG, "Sending State Change: " + BluetoothAdapter.nameForState(prevState) + " > " + BluetoothAdapter.nameForState(newState)); } Intent intent = new Intent(BluetoothAdapter.ACTION_STATE_CHANGED); intent.putExtra(BluetoothAdapter.EXTRA_PREVIOUS_STATE, prevState); intent.putExtra(BluetoothAdapter.EXTRA_STATE, newState); Loading