Loading services/core/java/com/android/server/BluetoothManagerService.java +36 −14 Original line number Diff line number Diff line Loading @@ -25,9 +25,9 @@ import static android.os.PowerExemptionManager.TEMPORARY_ALLOW_LIST_TYPE_FOREGRO import static android.os.UserHandle.USER_SYSTEM; import android.Manifest; import android.annotation.NonNull; import android.annotation.RequiresPermission; import android.annotation.SuppressLint; import android.annotation.NonNull; import android.app.ActivityManager; import android.app.AppGlobals; import android.app.AppOpsManager; Loading Loading @@ -187,8 +187,6 @@ class BluetoothManagerService extends IBluetoothManager.Stub { private final ReentrantReadWriteLock mBluetoothLock = new ReentrantReadWriteLock(); private boolean mBinding; private boolean mUnbinding; private int mWaitForEnableRetry; private int mWaitForDisableRetry; private BluetoothModeChangeHelper mBluetoothModeChangeHelper; Loading Loading @@ -982,14 +980,15 @@ class BluetoothManagerService extends IBluetoothManager.Stub { if (mState == BluetoothAdapter.STATE_ON || mState == BluetoothAdapter.STATE_BLE_ON || mState == BluetoothAdapter.STATE_TURNING_ON || mState == BluetoothAdapter.STATE_TURNING_OFF) { Log.d(TAG, "enableBLE(): Bluetooth already enabled"); || mState == BluetoothAdapter.STATE_TURNING_OFF || mState == BluetoothAdapter.STATE_BLE_TURNING_ON) { Log.d(TAG, "enableBLE(): Bluetooth is already enabled or is turning on"); return true; } synchronized (mReceiver) { // waive WRITE_SECURE_SETTINGS permission check sendEnableMsg(false, BluetoothProtoEnums.ENABLE_DISABLE_REASON_APPLICATION_REQUEST, packageName); sendEnableMsg(false, BluetoothProtoEnums.ENABLE_DISABLE_REASON_APPLICATION_REQUEST, packageName, true); } return true; } Loading Loading @@ -1802,6 +1801,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub { private class BluetoothHandler extends Handler { boolean mGetNameAddressOnly = false; private int mWaitForEnableRetry; private int mWaitForDisableRetry; BluetoothHandler(Looper looper) { super(looper); Loading Loading @@ -1852,11 +1853,12 @@ class BluetoothManagerService extends IBluetoothManager.Stub { case MESSAGE_ENABLE: int quietEnable = msg.arg1; int isBle = msg.arg2; if (mHandler.hasMessages(MESSAGE_HANDLE_DISABLE_DELAYED) || mHandler.hasMessages(MESSAGE_HANDLE_ENABLE_DELAYED)) { // We are handling enable or disable right now, wait for it. mHandler.sendMessageDelayed(mHandler.obtainMessage(MESSAGE_ENABLE, quietEnable, 0), ENABLE_DISABLE_DELAY_MS); quietEnable, isBle), ENABLE_DISABLE_DELAY_MS); break; } Loading @@ -1871,13 +1873,28 @@ class BluetoothManagerService extends IBluetoothManager.Stub { try { mBluetoothLock.readLock().lock(); if (mBluetooth != null) { boolean isHandled = true; int state = mBluetooth.getState(); if (state == BluetoothAdapter.STATE_BLE_ON) { switch (state) { case BluetoothAdapter.STATE_BLE_ON: if (isBle == 1) { Slog.i(TAG, "Already at BLE_ON State"); } else { Slog.w(TAG, "BT Enable in BLE_ON State, going to ON"); mBluetooth.onLeServiceUp(mContext.getAttributionSource()); persistBluetoothSetting(BLUETOOTH_ON_BLUETOOTH); } break; case BluetoothAdapter.STATE_BLE_TURNING_ON: case BluetoothAdapter.STATE_TURNING_ON: case BluetoothAdapter.STATE_ON: Slog.i(TAG, "MESSAGE_ENABLE: already enabled"); break; default: isHandled = false; break; } if (isHandled) break; } } catch (RemoteException e) { Slog.e(TAG, "", e); Loading Loading @@ -2643,7 +2660,12 @@ class BluetoothManagerService extends IBluetoothManager.Stub { } private void sendEnableMsg(boolean quietMode, int reason, String packageName) { mHandler.sendMessage(mHandler.obtainMessage(MESSAGE_ENABLE, quietMode ? 1 : 0, 0)); sendEnableMsg(quietMode, reason, packageName, false); } private void sendEnableMsg(boolean quietMode, int reason, String packageName, boolean isBle) { mHandler.sendMessage(mHandler.obtainMessage(MESSAGE_ENABLE, quietMode ? 1 : 0, isBle ? 1 : 0)); addActiveLog(reason, packageName, true); mLastEnabledTime = SystemClock.elapsedRealtime(); } Loading Loading
services/core/java/com/android/server/BluetoothManagerService.java +36 −14 Original line number Diff line number Diff line Loading @@ -25,9 +25,9 @@ import static android.os.PowerExemptionManager.TEMPORARY_ALLOW_LIST_TYPE_FOREGRO import static android.os.UserHandle.USER_SYSTEM; import android.Manifest; import android.annotation.NonNull; import android.annotation.RequiresPermission; import android.annotation.SuppressLint; import android.annotation.NonNull; import android.app.ActivityManager; import android.app.AppGlobals; import android.app.AppOpsManager; Loading Loading @@ -187,8 +187,6 @@ class BluetoothManagerService extends IBluetoothManager.Stub { private final ReentrantReadWriteLock mBluetoothLock = new ReentrantReadWriteLock(); private boolean mBinding; private boolean mUnbinding; private int mWaitForEnableRetry; private int mWaitForDisableRetry; private BluetoothModeChangeHelper mBluetoothModeChangeHelper; Loading Loading @@ -982,14 +980,15 @@ class BluetoothManagerService extends IBluetoothManager.Stub { if (mState == BluetoothAdapter.STATE_ON || mState == BluetoothAdapter.STATE_BLE_ON || mState == BluetoothAdapter.STATE_TURNING_ON || mState == BluetoothAdapter.STATE_TURNING_OFF) { Log.d(TAG, "enableBLE(): Bluetooth already enabled"); || mState == BluetoothAdapter.STATE_TURNING_OFF || mState == BluetoothAdapter.STATE_BLE_TURNING_ON) { Log.d(TAG, "enableBLE(): Bluetooth is already enabled or is turning on"); return true; } synchronized (mReceiver) { // waive WRITE_SECURE_SETTINGS permission check sendEnableMsg(false, BluetoothProtoEnums.ENABLE_DISABLE_REASON_APPLICATION_REQUEST, packageName); sendEnableMsg(false, BluetoothProtoEnums.ENABLE_DISABLE_REASON_APPLICATION_REQUEST, packageName, true); } return true; } Loading Loading @@ -1802,6 +1801,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub { private class BluetoothHandler extends Handler { boolean mGetNameAddressOnly = false; private int mWaitForEnableRetry; private int mWaitForDisableRetry; BluetoothHandler(Looper looper) { super(looper); Loading Loading @@ -1852,11 +1853,12 @@ class BluetoothManagerService extends IBluetoothManager.Stub { case MESSAGE_ENABLE: int quietEnable = msg.arg1; int isBle = msg.arg2; if (mHandler.hasMessages(MESSAGE_HANDLE_DISABLE_DELAYED) || mHandler.hasMessages(MESSAGE_HANDLE_ENABLE_DELAYED)) { // We are handling enable or disable right now, wait for it. mHandler.sendMessageDelayed(mHandler.obtainMessage(MESSAGE_ENABLE, quietEnable, 0), ENABLE_DISABLE_DELAY_MS); quietEnable, isBle), ENABLE_DISABLE_DELAY_MS); break; } Loading @@ -1871,13 +1873,28 @@ class BluetoothManagerService extends IBluetoothManager.Stub { try { mBluetoothLock.readLock().lock(); if (mBluetooth != null) { boolean isHandled = true; int state = mBluetooth.getState(); if (state == BluetoothAdapter.STATE_BLE_ON) { switch (state) { case BluetoothAdapter.STATE_BLE_ON: if (isBle == 1) { Slog.i(TAG, "Already at BLE_ON State"); } else { Slog.w(TAG, "BT Enable in BLE_ON State, going to ON"); mBluetooth.onLeServiceUp(mContext.getAttributionSource()); persistBluetoothSetting(BLUETOOTH_ON_BLUETOOTH); } break; case BluetoothAdapter.STATE_BLE_TURNING_ON: case BluetoothAdapter.STATE_TURNING_ON: case BluetoothAdapter.STATE_ON: Slog.i(TAG, "MESSAGE_ENABLE: already enabled"); break; default: isHandled = false; break; } if (isHandled) break; } } catch (RemoteException e) { Slog.e(TAG, "", e); Loading Loading @@ -2643,7 +2660,12 @@ class BluetoothManagerService extends IBluetoothManager.Stub { } private void sendEnableMsg(boolean quietMode, int reason, String packageName) { mHandler.sendMessage(mHandler.obtainMessage(MESSAGE_ENABLE, quietMode ? 1 : 0, 0)); sendEnableMsg(quietMode, reason, packageName, false); } private void sendEnableMsg(boolean quietMode, int reason, String packageName, boolean isBle) { mHandler.sendMessage(mHandler.obtainMessage(MESSAGE_ENABLE, quietMode ? 1 : 0, isBle ? 1 : 0)); addActiveLog(reason, packageName, true); mLastEnabledTime = SystemClock.elapsedRealtime(); } Loading