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

Commit 14188a3d authored by Yi Jiang's avatar Yi Jiang Committed by Alex Salo
Browse files

Syncs camera sensor with gesture sensor.

Extends the usages of the camera sensor. Whenever there is a gesture
sensor event detected, open camera to check the face pose as well.

Test: manually
Bug: 181838365

Change-Id: I62a3666848f95fab8a5b7d30520efb492cd481f1
parent a6c3d6ad
Loading
Loading
Loading
Loading
+0 −14
Original line number Original line Diff line number Diff line
@@ -1539,20 +1539,6 @@ public class DisplayRotation {
            }
            }
        }
        }


        @Override
        public boolean canUseRotationResolver() {
            if (mUserRotationMode == WindowManagerPolicy.USER_ROTATION_LOCKED) return false;

            switch (mCurrentAppOrientation) {
                case ActivityInfo.SCREEN_ORIENTATION_FULL_USER:
                case ActivityInfo.SCREEN_ORIENTATION_USER:
                case ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED:
                case ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE:
                case ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT:
                    return true;
            }
            return false;
        }


        @Override
        @Override
        public void onProposedRotationChanged(int rotation) {
        public void onProposedRotationChanged(int rotation) {
+1 −14
Original line number Original line Diff line number Diff line
@@ -275,19 +275,6 @@ public abstract class WindowOrientationListener {
        }
        }
    }
    }


    /**
     * Returns true if the current status of the phone is suitable for using rotation resolver
     * service.
     *
     * To reduce the power consumption of rotation resolver service, rotation query should run less
     * frequently than other low power orientation sensors. This method is used to check whether
     * the current status of the phone is necessary to request a suggested screen rotation from the
     * rotation resolver service. Note that it always returns {@code false} in the base class. It
     * should be overridden in the derived classes.
     */
    public boolean canUseRotationResolver() {
        return false;
    }


    /**
    /**
     * Returns true if the rotation resolver feature is enabled by setting. It means {@link
     * Returns true if the rotation resolver feature is enabled by setting. It means {@link
@@ -1155,7 +1142,7 @@ public abstract class WindowOrientationListener {
                }
                }
            }
            }


            if (isRotationResolverEnabled() && canUseRotationResolver()) {
            if (isRotationResolverEnabled()) {
                if (mRotationResolverService == null) {
                if (mRotationResolverService == null) {
                    mRotationResolverService = LocalServices.getService(
                    mRotationResolverService = LocalServices.getService(
                            RotationResolverInternal.class);
                            RotationResolverInternal.class);
+0 −17
Original line number Original line Diff line number Diff line
@@ -58,7 +58,6 @@ public class WindowOrientationListenerTest {
    private com.android.server.wm.WindowOrientationListener mWindowOrientationListener;
    private com.android.server.wm.WindowOrientationListener mWindowOrientationListener;
    private int mFinalizedRotation;
    private int mFinalizedRotation;
    private boolean mRotationResolverEnabled;
    private boolean mRotationResolverEnabled;
    private boolean mCanUseRotationResolver;
    private SensorEvent mFakeSensorEvent;
    private SensorEvent mFakeSensorEvent;
    private Sensor mFakeSensor;
    private Sensor mFakeSensor;


@@ -66,7 +65,6 @@ public class WindowOrientationListenerTest {
    public void setUp() {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        MockitoAnnotations.initMocks(this);
        mRotationResolverEnabled = true;
        mRotationResolverEnabled = true;
        mCanUseRotationResolver = true;


        mFakeRotationResolverInternal = new TestableRotationResolver();
        mFakeRotationResolverInternal = new TestableRotationResolver();
        doReturn(mMockSensorManager).when(mMockContext).getSystemService(Context.SENSOR_SERVICE);
        doReturn(mMockSensorManager).when(mMockContext).getSystemService(Context.SENSOR_SERVICE);
@@ -88,16 +86,6 @@ public class WindowOrientationListenerTest {
        assertThat(mFinalizedRotation).isEqualTo(Surface.ROTATION_90);
        assertThat(mFinalizedRotation).isEqualTo(Surface.ROTATION_90);
    }
    }


    @Test
    public void testOnSensorChanged_cannotUseRotationResolver_useSensorResult() {
        mCanUseRotationResolver = false;

        mWindowOrientationListener.mOrientationJudge.onSensorChanged(mFakeSensorEvent);

        assertThat(mFinalizedRotation).isEqualTo(Surface.ROTATION_90);

    }

    @Test
    @Test
    public void testOnSensorChanged_normalCase() {
    public void testOnSensorChanged_normalCase() {
        mFakeRotationResolverInternal.mResult = Surface.ROTATION_180;
        mFakeRotationResolverInternal.mResult = Surface.ROTATION_180;
@@ -138,11 +126,6 @@ public class WindowOrientationListenerTest {
            mFinalizedRotation = rotation;
            mFinalizedRotation = rotation;
        }
        }


        @Override
        public boolean canUseRotationResolver() {
            return mCanUseRotationResolver;
        }

        @Override
        @Override
        public boolean isRotationResolverEnabled() {
        public boolean isRotationResolverEnabled() {
            return mRotationResolverEnabled;
            return mRotationResolverEnabled;