Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce62280d authored by Daniel's avatar Daniel
Browse files

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
parent 2bd78dee
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);
    }
}
+2 −4
Original line number Diff line number Diff line
@@ -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);
        }
+7 −8
Original line number Diff line number Diff line
@@ -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);