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

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

Change-Id: I3c2d52e438733de32ab5ed155b329483a77b25d5
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Hao Dong
2023-03-01 23:03:13 +00:00
committed by Automerger Merge Worker

View File

@@ -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;
}
}