diff options
| author | 2021-03-10 20:42:31 +0000 | |
|---|---|---|
| committer | 2021-03-10 20:42:31 +0000 | |
| commit | 4fd089549ee3359eff3b7d9da003ab981e5389c9 (patch) | |
| tree | 5a23908d19e0f37cdf93625e257a2b7479f54ef9 | |
| parent | b19e9f88acb6bcdecce9049482be542d46ef4117 (diff) | |
| parent | c140dee3e919ca6f0b0a59eb4f54f7af589d4a96 (diff) | |
Merge "Fix CDM device disconnected callback immediately triggering "device disappeared"" into sc-dev
| -rw-r--r-- | services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index 52237c934797..4b5684511757 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -766,6 +766,7 @@ public class CompanionDeviceManagerService extends SystemService implements Bind .get(association.getPackageName()); if (serviceConnector != null) { serviceConnector.unbind(); + restartBleScan(); } } } @@ -1067,11 +1068,19 @@ public class CompanionDeviceManagerService extends SystemService implements Bind } void onDeviceDisconnected(String address) { - Slog.d(LOG_TAG, "onDeviceConnected(address = " + address + ")"); + Slog.d(LOG_TAG, "onDeviceDisconnected(address = " + address + ")"); mCurrentlyConnectedDevices.remove(address); - onDeviceDisappeared(address); + Date lastSeen = mDevicesLastNearby.get(address); + if (isDeviceDisappeared(lastSeen)) { + onDeviceDisappeared(address); + } + } + + private boolean isDeviceDisappeared(Date lastSeen) { + return lastSeen == null || System.currentTimeMillis() - lastSeen.getTime() + >= DEVICE_DISAPPEARED_UNBIND_TIMEOUT_MS; } private ServiceConnector<ICompanionDeviceService> getDeviceListenerServiceConnector( @@ -1172,8 +1181,7 @@ public class CompanionDeviceManagerService extends SystemService implements Bind String address = mDevicesLastNearby.keyAt(i); Date lastNearby = mDevicesLastNearby.valueAt(i); - if (System.currentTimeMillis() - lastNearby.getTime() - >= DEVICE_DISAPPEARED_UNBIND_TIMEOUT_MS) { + if (isDeviceDisappeared(lastNearby)) { for (Association association : getAllAssociations(address)) { if (association.isNotifyOnDeviceNearby()) { getDeviceListenerServiceConnector(association).unbind(); |