Loading services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +2 −36 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import static android.Manifest.permission.MANAGE_COMPANION_DEVICES; import static android.Manifest.permission.REQUEST_COMPANION_SELF_MANAGED; import static android.Manifest.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE; import static android.Manifest.permission.USE_COMPANION_TRANSPORTS; import static android.companion.DevicePresenceEvent.EVENT_BT_CONNECTED; import static android.content.pm.PackageManager.CERT_INPUT_SHA256; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Process.SYSTEM_UID; Loading Loading @@ -53,7 +52,6 @@ import android.app.ActivityManagerInternal; import android.app.AppOpsManager; import android.app.NotificationManager; import android.app.PendingIntent; import android.bluetooth.BluetoothDevice; import android.companion.AssociationInfo; import android.companion.AssociationRequest; import android.companion.IAssociationRequestCallback; Loading @@ -76,7 +74,6 @@ import android.os.Binder; import android.os.Environment; import android.os.Parcel; import android.os.ParcelFileDescriptor; import android.os.ParcelUuid; import android.os.PowerExemptionManager; import android.os.PowerManagerInternal; import android.os.RemoteException; Loading Loading @@ -118,9 +115,7 @@ import com.android.server.wm.ActivityTaskManagerInternal; import java.io.File; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Set; Loading Loading @@ -250,38 +245,9 @@ public class CompanionDeviceManagerService extends SystemService { @Override public void onUserUnlocked(@NonNull TargetUser user) { Slog.i(TAG, "onUserUnlocked() user=" + user); // Notify and bind the app after the phone is unlocked. final int userId = user.getUserIdentifier(); final Set<BluetoothDevice> blueToothDevices = mDevicePresenceProcessor.getPendingConnectedDevices().get(userId); final List<ObservableUuid> observableUuids = mObservableUuidStore.getObservableUuidsForUser(userId); if (blueToothDevices != null) { for (BluetoothDevice bluetoothDevice : blueToothDevices) { final ParcelUuid[] bluetoothDeviceUuids = bluetoothDevice.getUuids(); final List<ParcelUuid> deviceUuids = ArrayUtils.isEmpty(bluetoothDeviceUuids) ? Collections.emptyList() : Arrays.asList(bluetoothDeviceUuids); for (AssociationInfo ai : mAssociationStore.getActiveAssociationsByAddress( bluetoothDevice.getAddress())) { Slog.i(TAG, "onUserUnlocked, device id( " + ai.getId() + " ) is connected"); mDevicePresenceProcessor.onBluetoothCompanionDeviceConnected(ai.getId()); } for (ObservableUuid observableUuid : observableUuids) { if (deviceUuids.contains(observableUuid.getUuid())) { Slog.i(TAG, "onUserUnlocked, UUID( " + observableUuid.getUuid() + " ) is connected"); mDevicePresenceProcessor.onDevicePresenceEventByUuid( observableUuid, EVENT_BT_CONNECTED); } } } } mDevicePresenceProcessor.sendDevicePresenceEventOnUnlocked(user.getUserIdentifier()); } private void onPackageRemoveOrDataClearedInternal( Loading services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java +56 −19 Original line number Diff line number Diff line Loading @@ -80,25 +80,6 @@ class CompanionDeviceShellCommand extends ShellCommand { final int associationId; try { if ("simulate-device-event".equals(cmd) && Flags.devicePresence()) { associationId = getNextIntArgRequired(); int event = getNextIntArgRequired(); mDevicePresenceProcessor.simulateDeviceEvent(associationId, event); return 0; } if ("simulate-device-uuid-event".equals(cmd) && Flags.devicePresence()) { String uuid = getNextArgRequired(); String packageName = getNextArgRequired(); int userId = getNextIntArgRequired(); int event = getNextIntArgRequired(); ObservableUuid observableUuid = new ObservableUuid( userId, ParcelUuid.fromString(uuid), packageName, System.currentTimeMillis()); mDevicePresenceProcessor.simulateDeviceEventByUuid(observableUuid, event); return 0; } switch (cmd) { case "list": { final int userId = getNextIntArgRequired(); Loading Loading @@ -167,6 +148,51 @@ class CompanionDeviceShellCommand extends ShellCommand { mDevicePresenceProcessor.simulateDeviceEvent(associationId, /* event */ 1); break; case "simulate-device-event": { if (Flags.devicePresence()) { associationId = getNextIntArgRequired(); int event = getNextIntArgRequired(); mDevicePresenceProcessor.simulateDeviceEvent(associationId, event); } break; } case "simulate-device-uuid-event": { if (Flags.devicePresence()) { String uuid = getNextArgRequired(); String packageName = getNextArgRequired(); int userId = getNextIntArgRequired(); int event = getNextIntArgRequired(); ObservableUuid observableUuid = new ObservableUuid( userId, ParcelUuid.fromString(uuid), packageName, System.currentTimeMillis()); mDevicePresenceProcessor.simulateDeviceEventByUuid(observableUuid, event); } break; } case "simulate-device-event-device-locked": { if (Flags.devicePresence()) { associationId = getNextIntArgRequired(); int userId = getNextIntArgRequired(); int event = getNextIntArgRequired(); String uuid = getNextArgRequired(); ParcelUuid parcelUuid = uuid.equals("null") ? null : ParcelUuid.fromString(uuid); mDevicePresenceProcessor.simulateDeviceEventOnDeviceLocked( associationId, userId, event, parcelUuid); } break; } case "simulate-device-event-device-unlocked": { if (Flags.devicePresence()) { int userId = getNextIntArgRequired(); mDevicePresenceProcessor.simulateDeviceEventOnUserUnlocked(userId); } break; } case "get-backup-payload": { final int userId = getNextIntArgRequired(); byte[] payload = mBackupRestoreProcessor.getBackupPayload(userId); Loading Loading @@ -478,6 +504,17 @@ class CompanionDeviceShellCommand extends ShellCommand { pw.println(" Make CDM act as if the given DEVICE is BT disconnected base" + "on the UUID"); pw.println(" USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY."); pw.println(" simulate-device-event-device-locked" + " ASSOCIATION_ID USER_ID DEVICE_EVENT PARCEL_UUID"); pw.println(" Simulate device event when the device is locked"); pw.println(" USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY."); pw.println(" simulate-device-event-device-unlocked USER_ID"); pw.println(" Simulate device unlocked for given user. This will send corresponding"); pw.println(" callback after simulate-device-event-device-locked"); pw.println(" command has been called."); pw.println(" USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY."); } pw.println(" remove-inactive-associations"); Loading services/companion/java/com/android/server/companion/presence/BleCompanionDeviceScanner.java +4 −4 Original line number Diff line number Diff line Loading @@ -73,9 +73,9 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener { private static final String TAG = "CDM_BleCompanionDeviceScanner"; interface Callback { void onBleCompanionDeviceFound(int associationId); void onBleCompanionDeviceFound(int associationId, int userId); void onBleCompanionDeviceLost(int associationId); void onBleCompanionDeviceLost(int associationId, int userId); } private final @NonNull AssociationStore mAssociationStore; Loading Loading @@ -259,7 +259,7 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener { if (DEBUG) Log.d(TAG, " > associations=" + Arrays.toString(associations.toArray())); for (AssociationInfo association : associations) { mCallback.onBleCompanionDeviceFound(association.getId()); mCallback.onBleCompanionDeviceFound(association.getId(), association.getUserId()); } } Loading @@ -272,7 +272,7 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener { if (DEBUG) Log.d(TAG, " > associations=" + Arrays.toString(associations.toArray())); for (AssociationInfo association : associations) { mCallback.onBleCompanionDeviceLost(association.getId()); mCallback.onBleCompanionDeviceLost(association.getId(), association.getUserId()); } } Loading services/companion/java/com/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener.java +9 −48 Original line number Diff line number Diff line Loading @@ -34,20 +34,15 @@ import android.os.ParcelUuid; import android.os.UserHandle; import android.os.UserManager; import android.util.Log; import android.util.Slog; import android.util.SparseArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.ArrayUtils; import com.android.server.companion.association.AssociationStore; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @SuppressLint("LongLogTag") public class BluetoothCompanionDeviceConnectionListener Loading @@ -56,14 +51,13 @@ public class BluetoothCompanionDeviceConnectionListener private static final String TAG = "CDM_BluetoothCompanionDeviceConnectionListener"; interface Callback { void onBluetoothCompanionDeviceConnected(int associationId); void onBluetoothCompanionDeviceConnected(int associationId, int userId); void onBluetoothCompanionDeviceDisconnected(int associationId); void onBluetoothCompanionDeviceDisconnected(int associationId, int userId); void onDevicePresenceEventByUuid(ObservableUuid uuid, int event); } private final UserManager mUserManager; private final @NonNull AssociationStore mAssociationStore; private final @NonNull Callback mCallback; /** A set of ALL connected BT device (not only companion.) */ Loading @@ -71,21 +65,12 @@ public class BluetoothCompanionDeviceConnectionListener private final @NonNull ObservableUuidStore mObservableUuidStore; /** * A structure hold the connected BT devices that are pending to be reported to the companion * app when the user unlocks the local device per userId. */ @GuardedBy("mPendingConnectedDevices") @NonNull final SparseArray<Set<BluetoothDevice>> mPendingConnectedDevices = new SparseArray<>(); BluetoothCompanionDeviceConnectionListener(UserManager userManager, @NonNull AssociationStore associationStore, @NonNull ObservableUuidStore observableUuidStore, @NonNull Callback callback) { mAssociationStore = associationStore; mObservableUuidStore = observableUuidStore; mCallback = callback; mUserManager = userManager; } public void init(@NonNull BluetoothAdapter btAdapter) { Loading @@ -111,20 +96,9 @@ public class BluetoothCompanionDeviceConnectionListener if (DEBUG) Log.w(TAG, "Device " + btDeviceToString(device) + " is already connected."); return; } // Try to bind and notify the app after the phone is unlocked. if (!mUserManager.isUserUnlockingOrUnlocked(UserHandle.myUserId())) { Slog.i(TAG, "Current user is not in unlocking or unlocked stage yet. Notify " + "the application when the phone is unlocked"); synchronized (mPendingConnectedDevices) { Set<BluetoothDevice> bluetoothDevices = mPendingConnectedDevices.get( userId, new HashSet<>()); bluetoothDevices.add(device); mPendingConnectedDevices.put(userId, bluetoothDevices); } } else { onDeviceConnectivityChanged(device, true); } } /** * Overrides Loading @@ -149,19 +123,6 @@ public class BluetoothCompanionDeviceConnectionListener return; } // Do not need to report the connectivity since the user is not unlock the phone so // that cdm is not bind with the app yet. if (!mUserManager.isUserUnlockingOrUnlocked(userId)) { synchronized (mPendingConnectedDevices) { Set<BluetoothDevice> bluetoothDevices = mPendingConnectedDevices.get(userId); if (bluetoothDevices != null) { bluetoothDevices.remove(device); } } return; } onDeviceConnectivityChanged(device, false); } Loading Loading @@ -190,16 +151,15 @@ public class BluetoothCompanionDeviceConnectionListener if (!association.isNotifyOnDeviceNearby()) continue; final int id = association.getId(); if (connected) { mCallback.onBluetoothCompanionDeviceConnected(id); mCallback.onBluetoothCompanionDeviceConnected(id, association.getUserId()); } else { mCallback.onBluetoothCompanionDeviceDisconnected(id); mCallback.onBluetoothCompanionDeviceDisconnected(id, association.getUserId()); } } for (ObservableUuid uuid : observableUuids) { if (deviceUuids.contains(uuid.getUuid())) { mCallback.onDevicePresenceEventByUuid( uuid, connected ? EVENT_BT_CONNECTED mCallback.onDevicePresenceEventByUuid(uuid, connected ? EVENT_BT_CONNECTED : EVENT_BT_DISCONNECTED); } } Loading @@ -210,7 +170,8 @@ public class BluetoothCompanionDeviceConnectionListener if (DEBUG) Log.d(TAG, "onAssociation_Added() " + association); if (mAllConnectedDevices.containsKey(association.getDeviceMacAddress())) { mCallback.onBluetoothCompanionDeviceConnected(association.getId()); mCallback.onBluetoothCompanionDeviceConnected( association.getId(), association.getUserId()); } } Loading services/companion/java/com/android/server/companion/presence/DevicePresenceProcessor.java +183 −16 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +2 −36 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import static android.Manifest.permission.MANAGE_COMPANION_DEVICES; import static android.Manifest.permission.REQUEST_COMPANION_SELF_MANAGED; import static android.Manifest.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE; import static android.Manifest.permission.USE_COMPANION_TRANSPORTS; import static android.companion.DevicePresenceEvent.EVENT_BT_CONNECTED; import static android.content.pm.PackageManager.CERT_INPUT_SHA256; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Process.SYSTEM_UID; Loading Loading @@ -53,7 +52,6 @@ import android.app.ActivityManagerInternal; import android.app.AppOpsManager; import android.app.NotificationManager; import android.app.PendingIntent; import android.bluetooth.BluetoothDevice; import android.companion.AssociationInfo; import android.companion.AssociationRequest; import android.companion.IAssociationRequestCallback; Loading @@ -76,7 +74,6 @@ import android.os.Binder; import android.os.Environment; import android.os.Parcel; import android.os.ParcelFileDescriptor; import android.os.ParcelUuid; import android.os.PowerExemptionManager; import android.os.PowerManagerInternal; import android.os.RemoteException; Loading Loading @@ -118,9 +115,7 @@ import com.android.server.wm.ActivityTaskManagerInternal; import java.io.File; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Set; Loading Loading @@ -250,38 +245,9 @@ public class CompanionDeviceManagerService extends SystemService { @Override public void onUserUnlocked(@NonNull TargetUser user) { Slog.i(TAG, "onUserUnlocked() user=" + user); // Notify and bind the app after the phone is unlocked. final int userId = user.getUserIdentifier(); final Set<BluetoothDevice> blueToothDevices = mDevicePresenceProcessor.getPendingConnectedDevices().get(userId); final List<ObservableUuid> observableUuids = mObservableUuidStore.getObservableUuidsForUser(userId); if (blueToothDevices != null) { for (BluetoothDevice bluetoothDevice : blueToothDevices) { final ParcelUuid[] bluetoothDeviceUuids = bluetoothDevice.getUuids(); final List<ParcelUuid> deviceUuids = ArrayUtils.isEmpty(bluetoothDeviceUuids) ? Collections.emptyList() : Arrays.asList(bluetoothDeviceUuids); for (AssociationInfo ai : mAssociationStore.getActiveAssociationsByAddress( bluetoothDevice.getAddress())) { Slog.i(TAG, "onUserUnlocked, device id( " + ai.getId() + " ) is connected"); mDevicePresenceProcessor.onBluetoothCompanionDeviceConnected(ai.getId()); } for (ObservableUuid observableUuid : observableUuids) { if (deviceUuids.contains(observableUuid.getUuid())) { Slog.i(TAG, "onUserUnlocked, UUID( " + observableUuid.getUuid() + " ) is connected"); mDevicePresenceProcessor.onDevicePresenceEventByUuid( observableUuid, EVENT_BT_CONNECTED); } } } } mDevicePresenceProcessor.sendDevicePresenceEventOnUnlocked(user.getUserIdentifier()); } private void onPackageRemoveOrDataClearedInternal( Loading
services/companion/java/com/android/server/companion/CompanionDeviceShellCommand.java +56 −19 Original line number Diff line number Diff line Loading @@ -80,25 +80,6 @@ class CompanionDeviceShellCommand extends ShellCommand { final int associationId; try { if ("simulate-device-event".equals(cmd) && Flags.devicePresence()) { associationId = getNextIntArgRequired(); int event = getNextIntArgRequired(); mDevicePresenceProcessor.simulateDeviceEvent(associationId, event); return 0; } if ("simulate-device-uuid-event".equals(cmd) && Flags.devicePresence()) { String uuid = getNextArgRequired(); String packageName = getNextArgRequired(); int userId = getNextIntArgRequired(); int event = getNextIntArgRequired(); ObservableUuid observableUuid = new ObservableUuid( userId, ParcelUuid.fromString(uuid), packageName, System.currentTimeMillis()); mDevicePresenceProcessor.simulateDeviceEventByUuid(observableUuid, event); return 0; } switch (cmd) { case "list": { final int userId = getNextIntArgRequired(); Loading Loading @@ -167,6 +148,51 @@ class CompanionDeviceShellCommand extends ShellCommand { mDevicePresenceProcessor.simulateDeviceEvent(associationId, /* event */ 1); break; case "simulate-device-event": { if (Flags.devicePresence()) { associationId = getNextIntArgRequired(); int event = getNextIntArgRequired(); mDevicePresenceProcessor.simulateDeviceEvent(associationId, event); } break; } case "simulate-device-uuid-event": { if (Flags.devicePresence()) { String uuid = getNextArgRequired(); String packageName = getNextArgRequired(); int userId = getNextIntArgRequired(); int event = getNextIntArgRequired(); ObservableUuid observableUuid = new ObservableUuid( userId, ParcelUuid.fromString(uuid), packageName, System.currentTimeMillis()); mDevicePresenceProcessor.simulateDeviceEventByUuid(observableUuid, event); } break; } case "simulate-device-event-device-locked": { if (Flags.devicePresence()) { associationId = getNextIntArgRequired(); int userId = getNextIntArgRequired(); int event = getNextIntArgRequired(); String uuid = getNextArgRequired(); ParcelUuid parcelUuid = uuid.equals("null") ? null : ParcelUuid.fromString(uuid); mDevicePresenceProcessor.simulateDeviceEventOnDeviceLocked( associationId, userId, event, parcelUuid); } break; } case "simulate-device-event-device-unlocked": { if (Flags.devicePresence()) { int userId = getNextIntArgRequired(); mDevicePresenceProcessor.simulateDeviceEventOnUserUnlocked(userId); } break; } case "get-backup-payload": { final int userId = getNextIntArgRequired(); byte[] payload = mBackupRestoreProcessor.getBackupPayload(userId); Loading Loading @@ -478,6 +504,17 @@ class CompanionDeviceShellCommand extends ShellCommand { pw.println(" Make CDM act as if the given DEVICE is BT disconnected base" + "on the UUID"); pw.println(" USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY."); pw.println(" simulate-device-event-device-locked" + " ASSOCIATION_ID USER_ID DEVICE_EVENT PARCEL_UUID"); pw.println(" Simulate device event when the device is locked"); pw.println(" USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY."); pw.println(" simulate-device-event-device-unlocked USER_ID"); pw.println(" Simulate device unlocked for given user. This will send corresponding"); pw.println(" callback after simulate-device-event-device-locked"); pw.println(" command has been called."); pw.println(" USE FOR DEBUGGING AND/OR TESTING PURPOSES ONLY."); } pw.println(" remove-inactive-associations"); Loading
services/companion/java/com/android/server/companion/presence/BleCompanionDeviceScanner.java +4 −4 Original line number Diff line number Diff line Loading @@ -73,9 +73,9 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener { private static final String TAG = "CDM_BleCompanionDeviceScanner"; interface Callback { void onBleCompanionDeviceFound(int associationId); void onBleCompanionDeviceFound(int associationId, int userId); void onBleCompanionDeviceLost(int associationId); void onBleCompanionDeviceLost(int associationId, int userId); } private final @NonNull AssociationStore mAssociationStore; Loading Loading @@ -259,7 +259,7 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener { if (DEBUG) Log.d(TAG, " > associations=" + Arrays.toString(associations.toArray())); for (AssociationInfo association : associations) { mCallback.onBleCompanionDeviceFound(association.getId()); mCallback.onBleCompanionDeviceFound(association.getId(), association.getUserId()); } } Loading @@ -272,7 +272,7 @@ class BleCompanionDeviceScanner implements AssociationStore.OnChangeListener { if (DEBUG) Log.d(TAG, " > associations=" + Arrays.toString(associations.toArray())); for (AssociationInfo association : associations) { mCallback.onBleCompanionDeviceLost(association.getId()); mCallback.onBleCompanionDeviceLost(association.getId(), association.getUserId()); } } Loading
services/companion/java/com/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener.java +9 −48 Original line number Diff line number Diff line Loading @@ -34,20 +34,15 @@ import android.os.ParcelUuid; import android.os.UserHandle; import android.os.UserManager; import android.util.Log; import android.util.Slog; import android.util.SparseArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.ArrayUtils; import com.android.server.companion.association.AssociationStore; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @SuppressLint("LongLogTag") public class BluetoothCompanionDeviceConnectionListener Loading @@ -56,14 +51,13 @@ public class BluetoothCompanionDeviceConnectionListener private static final String TAG = "CDM_BluetoothCompanionDeviceConnectionListener"; interface Callback { void onBluetoothCompanionDeviceConnected(int associationId); void onBluetoothCompanionDeviceConnected(int associationId, int userId); void onBluetoothCompanionDeviceDisconnected(int associationId); void onBluetoothCompanionDeviceDisconnected(int associationId, int userId); void onDevicePresenceEventByUuid(ObservableUuid uuid, int event); } private final UserManager mUserManager; private final @NonNull AssociationStore mAssociationStore; private final @NonNull Callback mCallback; /** A set of ALL connected BT device (not only companion.) */ Loading @@ -71,21 +65,12 @@ public class BluetoothCompanionDeviceConnectionListener private final @NonNull ObservableUuidStore mObservableUuidStore; /** * A structure hold the connected BT devices that are pending to be reported to the companion * app when the user unlocks the local device per userId. */ @GuardedBy("mPendingConnectedDevices") @NonNull final SparseArray<Set<BluetoothDevice>> mPendingConnectedDevices = new SparseArray<>(); BluetoothCompanionDeviceConnectionListener(UserManager userManager, @NonNull AssociationStore associationStore, @NonNull ObservableUuidStore observableUuidStore, @NonNull Callback callback) { mAssociationStore = associationStore; mObservableUuidStore = observableUuidStore; mCallback = callback; mUserManager = userManager; } public void init(@NonNull BluetoothAdapter btAdapter) { Loading @@ -111,20 +96,9 @@ public class BluetoothCompanionDeviceConnectionListener if (DEBUG) Log.w(TAG, "Device " + btDeviceToString(device) + " is already connected."); return; } // Try to bind and notify the app after the phone is unlocked. if (!mUserManager.isUserUnlockingOrUnlocked(UserHandle.myUserId())) { Slog.i(TAG, "Current user is not in unlocking or unlocked stage yet. Notify " + "the application when the phone is unlocked"); synchronized (mPendingConnectedDevices) { Set<BluetoothDevice> bluetoothDevices = mPendingConnectedDevices.get( userId, new HashSet<>()); bluetoothDevices.add(device); mPendingConnectedDevices.put(userId, bluetoothDevices); } } else { onDeviceConnectivityChanged(device, true); } } /** * Overrides Loading @@ -149,19 +123,6 @@ public class BluetoothCompanionDeviceConnectionListener return; } // Do not need to report the connectivity since the user is not unlock the phone so // that cdm is not bind with the app yet. if (!mUserManager.isUserUnlockingOrUnlocked(userId)) { synchronized (mPendingConnectedDevices) { Set<BluetoothDevice> bluetoothDevices = mPendingConnectedDevices.get(userId); if (bluetoothDevices != null) { bluetoothDevices.remove(device); } } return; } onDeviceConnectivityChanged(device, false); } Loading Loading @@ -190,16 +151,15 @@ public class BluetoothCompanionDeviceConnectionListener if (!association.isNotifyOnDeviceNearby()) continue; final int id = association.getId(); if (connected) { mCallback.onBluetoothCompanionDeviceConnected(id); mCallback.onBluetoothCompanionDeviceConnected(id, association.getUserId()); } else { mCallback.onBluetoothCompanionDeviceDisconnected(id); mCallback.onBluetoothCompanionDeviceDisconnected(id, association.getUserId()); } } for (ObservableUuid uuid : observableUuids) { if (deviceUuids.contains(uuid.getUuid())) { mCallback.onDevicePresenceEventByUuid( uuid, connected ? EVENT_BT_CONNECTED mCallback.onDevicePresenceEventByUuid(uuid, connected ? EVENT_BT_CONNECTED : EVENT_BT_DISCONNECTED); } } Loading @@ -210,7 +170,8 @@ public class BluetoothCompanionDeviceConnectionListener if (DEBUG) Log.d(TAG, "onAssociation_Added() " + association); if (mAllConnectedDevices.containsKey(association.getDeviceMacAddress())) { mCallback.onBluetoothCompanionDeviceConnected(association.getId()); mCallback.onBluetoothCompanionDeviceConnected( association.getId(), association.getUserId()); } } Loading
services/companion/java/com/android/server/companion/presence/DevicePresenceProcessor.java +183 −16 File changed.Preview size limit exceeded, changes collapsed. Show changes