Refactor ProximityUpdateCallbackInternal to interface

Refactor ProximityUpdateCallbackInternal to interface. Also making sure
that the service unbinding happens when clear Attention Service command
is received.

Bug: 214395649
Test: atest CtsVoiceInteractionTestCases, atest CtsAttentionServiceDeviceTestCases
Change-Id: If8c23a9c68952e323fcb8eeb681e86b0e6119b18
This commit is contained in:
Daniel
2022-07-20 22:29:01 +00:00
parent 2bd78dee3a
commit ce62280d4b
3 changed files with 11 additions and 14 deletions

View File

@@ -83,11 +83,11 @@ public abstract class AttentionManagerInternal {
}
/** Internal interface for proximity callback. */
public abstract static class ProximityUpdateCallbackInternal {
public interface ProximityUpdateCallbackInternal {
/**
* @param distance the estimated distance of the user (in meter)
* The distance will be PROXIMITY_UNKNOWN if the proximity sensing was inconclusive.
*/
public abstract void onProximityUpdate(double distance);
void onProximityUpdate(double distance);
}
}

View File

@@ -856,9 +856,6 @@ public class AttentionManagerService extends SystemService {
@GuardedBy("mLock")
private void cancelAndUnbindLocked() {
synchronized (mLock) {
if (mCurrentAttentionCheck == null && mCurrentProximityUpdate == null) {
return;
}
if (mCurrentAttentionCheck != null) {
cancel();
}
@@ -940,7 +937,7 @@ public class AttentionManagerService extends SystemService {
}
}
class TestableProximityUpdateCallbackInternal extends ProximityUpdateCallbackInternal {
class TestableProximityUpdateCallbackInternal implements ProximityUpdateCallbackInternal {
private double mLastCallbackCode = PROXIMITY_UNKNOWN;
@Override
@@ -1072,6 +1069,7 @@ public class AttentionManagerService extends SystemService {
private void resetStates() {
synchronized (mLock) {
mCurrentProximityUpdate = null;
cancelAndUnbindLocked();
}
mComponentName = resolveAttentionService(mContext);
}

View File

@@ -192,14 +192,7 @@ final class HotwordDetectionConnection {
final AttentionManagerInternal mAttentionManagerInternal;
final AttentionManagerInternal.ProximityUpdateCallbackInternal mProximityCallbackInternal =
new AttentionManagerInternal.ProximityUpdateCallbackInternal() {
@Override
public void onProximityUpdate(double distance) {
synchronized (mLock) {
mProximityMeters = distance;
}
}
};
this::setProximityMeters;
volatile HotwordDetectionServiceIdentity mIdentity;
@@ -1190,6 +1183,12 @@ final class HotwordDetectionConnection {
}
}
private void setProximityMeters(double proximityMeters) {
synchronized (mLock) {
mProximityMeters = proximityMeters;
}
}
private static void bestEffortClose(Closeable... closeables) {
for (Closeable closeable : closeables) {
bestEffortClose(closeable);