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

Commit 7635fb9f authored by Hao Dong's avatar Hao Dong Committed by Automerger Merge Worker
Browse files

Merge "Do not announce a11y move instructions in sensor area." into udc-dev...

Merge "Do not announce a11y move instructions in sensor area." into udc-dev am: 3b3191ed am: 5c6fa8c8

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21618219



Change-Id: I3c2d52e438733de32ab5ed155b329483a77b25d5
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents ff4c3f6e 5c6fa8c8
Loading
Loading
Loading
Loading
+35 −14
Original line number Diff line number Diff line
@@ -62,16 +62,7 @@ public class UdfpsUtils {
     */
    public Point getTouchInNativeCoordinates(int idx, MotionEvent event,
            UdfpsOverlayParams udfpsOverlayParams) {
        Point portraitTouch = new Point((int) event.getRawX(idx), (int) event.getRawY(idx));
        int rot = udfpsOverlayParams.getRotation();
        if (rot == Surface.ROTATION_90 || rot == Surface.ROTATION_270) {
            RotationUtils.rotatePoint(
                    portraitTouch,
                    RotationUtils.deltaRotation(rot, Surface.ROTATION_0),
                    udfpsOverlayParams.getLogicalDisplayWidth(),
                    udfpsOverlayParams.getLogicalDisplayHeight()
            );
        }
        Point portraitTouch = getPortraitTouch(idx, event, udfpsOverlayParams);

        // Scale the coordinates to native resolution.
        float scale = udfpsOverlayParams.getScaleFactor();
@@ -80,14 +71,26 @@ public class UdfpsUtils {
        return portraitTouch;
    }

    /**
     * @param idx                The pointer identifier.
     * @param event              The MotionEvent object containing full information about the event.
     * @param udfpsOverlayParams The [UdfpsOverlayParams] used.
     * @return Whether the touch event is within sensor area.
     */
    public boolean isWithinSensorArea(int idx, MotionEvent event,
            UdfpsOverlayParams udfpsOverlayParams) {
        Point portraitTouch = getPortraitTouch(idx, event, udfpsOverlayParams);
        return udfpsOverlayParams.getSensorBounds().contains(portraitTouch.x, portraitTouch.y);
    }

    /**
     * This function computes the angle of touch relative to the sensor and maps the angle to a list
     * of help messages which are announced if accessibility is enabled.
     *
     * @return Whether the announcing string is null
     */
    public String onTouchOutsideOfSensorArea(boolean touchExplorationEnabled,
            Context context, int touchX, int touchY, UdfpsOverlayParams udfpsOverlayParams) {
    public String onTouchOutsideOfSensorArea(boolean touchExplorationEnabled, Context context,
            int scaledTouchX, int scaledTouchY, UdfpsOverlayParams udfpsOverlayParams) {
        if (!touchExplorationEnabled) {
            return null;
        }
@@ -106,8 +109,8 @@ public class UdfpsUtils {
        String theStr =
                onTouchOutsideOfSensorAreaImpl(
                        touchHints,
                        touchX,
                        touchY,
                        scaledTouchX,
                        scaledTouchY,
                        scaledSensorX,
                        scaledSensorY,
                        udfpsOverlayParams.getRotation()
@@ -156,4 +159,22 @@ public class UdfpsUtils {
        }
        return touchHints[index];
    }

    /**
     * Map the touch to portrait mode if the device is in landscape mode.
     */
    private Point getPortraitTouch(int idx, MotionEvent event,
            UdfpsOverlayParams udfpsOverlayParams) {
        Point portraitTouch = new Point((int) event.getRawX(idx), (int) event.getRawY(idx));
        int rot = udfpsOverlayParams.getRotation();
        if (rot == Surface.ROTATION_90 || rot == Surface.ROTATION_270) {
            RotationUtils.rotatePoint(
                    portraitTouch,
                    RotationUtils.deltaRotation(rot, Surface.ROTATION_0),
                    udfpsOverlayParams.getLogicalDisplayWidth(),
                    udfpsOverlayParams.getLogicalDisplayHeight()
            );
        }
        return portraitTouch;
    }
}