Merge "Fix CDM device disconnected callback immediately triggering "device disappeared"" into sc-dev
This commit is contained in:
@@ -766,6 +766,7 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
|
|||||||
.get(association.getPackageName());
|
.get(association.getPackageName());
|
||||||
if (serviceConnector != null) {
|
if (serviceConnector != null) {
|
||||||
serviceConnector.unbind();
|
serviceConnector.unbind();
|
||||||
|
restartBleScan();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1067,12 +1068,20 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
|
|||||||
}
|
}
|
||||||
|
|
||||||
void onDeviceDisconnected(String address) {
|
void onDeviceDisconnected(String address) {
|
||||||
Slog.d(LOG_TAG, "onDeviceConnected(address = " + address + ")");
|
Slog.d(LOG_TAG, "onDeviceDisconnected(address = " + address + ")");
|
||||||
|
|
||||||
mCurrentlyConnectedDevices.remove(address);
|
mCurrentlyConnectedDevices.remove(address);
|
||||||
|
|
||||||
|
Date lastSeen = mDevicesLastNearby.get(address);
|
||||||
|
if (isDeviceDisappeared(lastSeen)) {
|
||||||
onDeviceDisappeared(address);
|
onDeviceDisappeared(address);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isDeviceDisappeared(Date lastSeen) {
|
||||||
|
return lastSeen == null || System.currentTimeMillis() - lastSeen.getTime()
|
||||||
|
>= DEVICE_DISAPPEARED_UNBIND_TIMEOUT_MS;
|
||||||
|
}
|
||||||
|
|
||||||
private ServiceConnector<ICompanionDeviceService> getDeviceListenerServiceConnector(
|
private ServiceConnector<ICompanionDeviceService> getDeviceListenerServiceConnector(
|
||||||
Association a) {
|
Association a) {
|
||||||
@@ -1172,8 +1181,7 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
|
|||||||
String address = mDevicesLastNearby.keyAt(i);
|
String address = mDevicesLastNearby.keyAt(i);
|
||||||
Date lastNearby = mDevicesLastNearby.valueAt(i);
|
Date lastNearby = mDevicesLastNearby.valueAt(i);
|
||||||
|
|
||||||
if (System.currentTimeMillis() - lastNearby.getTime()
|
if (isDeviceDisappeared(lastNearby)) {
|
||||||
>= DEVICE_DISAPPEARED_UNBIND_TIMEOUT_MS) {
|
|
||||||
for (Association association : getAllAssociations(address)) {
|
for (Association association : getAllAssociations(address)) {
|
||||||
if (association.isNotifyOnDeviceNearby()) {
|
if (association.isNotifyOnDeviceNearby()) {
|
||||||
getDeviceListenerServiceConnector(association).unbind();
|
getDeviceListenerServiceConnector(association).unbind();
|
||||||
|
|||||||
Reference in New Issue
Block a user