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

Commit 5c6fa8c8 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 am: 3b3191ed

parents 3193c100 3b3191ed
Loading
Loading
Loading
Loading
+35 −14
Original line number Original line Diff line number Diff line
@@ -62,16 +62,7 @@ public class UdfpsUtils {
     */
     */
    public Point getTouchInNativeCoordinates(int idx, MotionEvent event,
    public Point getTouchInNativeCoordinates(int idx, MotionEvent event,
            UdfpsOverlayParams udfpsOverlayParams) {
            UdfpsOverlayParams udfpsOverlayParams) {
        Point portraitTouch = new Point((int) event.getRawX(idx), (int) event.getRawY(idx));
        Point portraitTouch = getPortraitTouch(idx, event, udfpsOverlayParams);
        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()
            );
        }


        // Scale the coordinates to native resolution.
        // Scale the coordinates to native resolution.
        float scale = udfpsOverlayParams.getScaleFactor();
        float scale = udfpsOverlayParams.getScaleFactor();
@@ -80,14 +71,26 @@ public class UdfpsUtils {
        return portraitTouch;
        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
     * 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.
     * of help messages which are announced if accessibility is enabled.
     *
     *
     * @return Whether the announcing string is null
     * @return Whether the announcing string is null
     */
     */
    public String onTouchOutsideOfSensorArea(boolean touchExplorationEnabled,
    public String onTouchOutsideOfSensorArea(boolean touchExplorationEnabled, Context context,
            Context context, int touchX, int touchY, UdfpsOverlayParams udfpsOverlayParams) {
            int scaledTouchX, int scaledTouchY, UdfpsOverlayParams udfpsOverlayParams) {
        if (!touchExplorationEnabled) {
        if (!touchExplorationEnabled) {
            return null;
            return null;
        }
        }
@@ -106,8 +109,8 @@ public class UdfpsUtils {
        String theStr =
        String theStr =
                onTouchOutsideOfSensorAreaImpl(
                onTouchOutsideOfSensorAreaImpl(
                        touchHints,
                        touchHints,
                        touchX,
                        scaledTouchX,
                        touchY,
                        scaledTouchY,
                        scaledSensorX,
                        scaledSensorX,
                        scaledSensorY,
                        scaledSensorY,
                        udfpsOverlayParams.getRotation()
                        udfpsOverlayParams.getRotation()
@@ -156,4 +159,22 @@ public class UdfpsUtils {
        }
        }
        return touchHints[index];
        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;
    }
}
}