Loading core/api/current.txt +27 −0 Original line number Diff line number Diff line Loading @@ -2994,6 +2994,7 @@ package android.accessibilityservice { } public final class AccessibilityGestureEvent implements android.os.Parcelable { ctor public AccessibilityGestureEvent(int, int, @NonNull java.util.List<android.view.MotionEvent>); method public int describeContents(); method @NonNull public static String gestureIdToString(int); method public int getDisplayId(); Loading @@ -3016,6 +3017,7 @@ package android.accessibilityservice { method public final android.accessibilityservice.AccessibilityServiceInfo getServiceInfo(); method @NonNull public final android.accessibilityservice.AccessibilityService.SoftKeyboardController getSoftKeyboardController(); method @NonNull public final java.util.List<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> getSystemActions(); method @NonNull public final android.accessibilityservice.TouchInteractionController getTouchInteractionController(int); method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows(); method @NonNull public final android.util.SparseArray<java.util.List<android.view.accessibility.AccessibilityWindowInfo>> getWindowsOnAllDisplays(); method public abstract void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent); Loading Loading @@ -3250,6 +3252,31 @@ package android.accessibilityservice { method public boolean willContinue(); } public final class TouchInteractionController { method public void addListener(@Nullable java.util.concurrent.Executor, @NonNull android.accessibilityservice.TouchInteractionController.Listener); method public int getDisplayId(); method public int getMaxPointerCount(); method public int getState(); method public void performClick(); method public void performLongClickAndStartDrag(); method public void removeAllListeners(); method public boolean removeListener(@NonNull android.accessibilityservice.TouchInteractionController.Listener); method public void requestDelegating(); method public void requestDragging(int); method public void requestTouchExploration(); method @NonNull public static String stateToString(int); field public static final int STATE_CLEAR = 0; // 0x0 field public static final int STATE_DELEGATING = 4; // 0x4 field public static final int STATE_DRAGGING = 3; // 0x3 field public static final int STATE_TOUCH_EXPLORING = 2; // 0x2 field public static final int STATE_TOUCH_INTERACTING = 1; // 0x1 } public static interface TouchInteractionController.Listener { method public void onMotionEvent(@NonNull android.view.MotionEvent); method public void onStateChanged(int); } } package android.accounts { core/java/android/accessibilityservice/AccessibilityGestureEvent.java +6 −1 Original line number Diff line number Diff line Loading @@ -150,7 +150,12 @@ public final class AccessibilityGestureEvent implements Parcelable { private final int mDisplayId; private List<MotionEvent> mMotionEvents = new ArrayList<>(); /** @hide */ /** * Constructs an AccessibilityGestureEvent to be dispatched to an accessibility service. * @param gestureId the id number of the gesture. * @param displayId the display on which this gesture was performed. * @param motionEvents the motion events that lead to this gesture. */ public AccessibilityGestureEvent( int gestureId, int displayId, @NonNull List<MotionEvent> motionEvents) { mGestureId = gestureId; Loading core/java/android/accessibilityservice/AccessibilityService.java +85 −1 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ import android.util.Slog; import android.util.SparseArray; import android.view.Display; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.SurfaceView; import android.view.WindowManager; import android.view.WindowManagerImpl; Loading @@ -65,6 +66,7 @@ import android.view.accessibility.AccessibilityWindowInfo; import com.android.internal.os.HandlerCaller; import com.android.internal.os.SomeArgs; import com.android.internal.util.Preconditions; import com.android.internal.util.function.pooled.PooledLambda; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading Loading @@ -582,6 +584,10 @@ public abstract class AccessibilityService extends Service { /** Magnification changed callbacks for different displays */ void onMagnificationChanged(int displayId, @NonNull Region region, float scale, float centerX, float centerY); /** Callbacks for receiving motion events. */ void onMotionEvent(MotionEvent event); /** Callback for tuch state changes. */ void onTouchStateChanged(int displayId, int state); void onSoftKeyboardShowModeChanged(int showMode); void onPerformGestureResult(int sequence, boolean completedSuccessfully); void onFingerprintCapturingGesturesChanged(boolean active); Loading Loading @@ -720,6 +726,12 @@ public abstract class AccessibilityService extends Service { /** List of magnification controllers, mapping from displayId -> MagnificationController. */ private final SparseArray<MagnificationController> mMagnificationControllers = new SparseArray<>(0); /** * List of touch interaction controllers, mapping from displayId -> TouchInteractionController. */ private final SparseArray<TouchInteractionController> mTouchInteractionControllers = new SparseArray<>(0); private SoftKeyboardController mSoftKeyboardController; private final SparseArray<AccessibilityButtonController> mAccessibilityButtonControllers = new SparseArray<>(0); Loading Loading @@ -1194,6 +1206,10 @@ public abstract class AccessibilityService extends Service { getFingerprintGestureController().onGesture(gesture); } int getConnectionId() { return mConnectionId; } /** * Used to control and query the state of display magnification. */ Loading Loading @@ -2209,6 +2225,16 @@ public abstract class AccessibilityService extends Service { centerX, centerY); } @Override public void onMotionEvent(MotionEvent event) { AccessibilityService.this.onMotionEvent(event); } @Override public void onTouchStateChanged(int displayId, int state) { AccessibilityService.this.onTouchStateChanged(displayId, state); } @Override public void onSoftKeyboardShowModeChanged(int showMode) { AccessibilityService.this.onSoftKeyboardShowModeChanged(showMode); Loading Loading @@ -2371,6 +2397,21 @@ public abstract class AccessibilityService extends Service { mCaller.sendMessage(mCaller.obtainMessage(DO_ON_SYSTEM_ACTIONS_CHANGED)); } @Override public void onMotionEvent(MotionEvent event) { final Message message = PooledLambda.obtainMessage( Callbacks::onMotionEvent, mCallback, event); mCaller.sendMessage(message); } @Override public void onTouchStateChanged(int displayId, int state) { final Message message = PooledLambda.obtainMessage(Callbacks::onTouchStateChanged, mCallback, displayId, state); mCaller.sendMessage(message); } @Override public void executeMessage(Message message) { switch (message.what) { Loading Loading @@ -2748,4 +2789,47 @@ public abstract class AccessibilityService extends Service { } } } /** * Returns the touch interaction controller for the specified logical display, which may be used * to detect gestures and otherwise control touch interactions. If * {@link AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE} is disabled the * controller's methods will have no effect. * * @param displayId The logical display id, use {@link Display#DEFAULT_DISPLAY} for default * display. * @return the TouchExploration controller */ @NonNull public final TouchInteractionController getTouchInteractionController(int displayId) { synchronized (mLock) { TouchInteractionController controller = mTouchInteractionControllers.get(displayId); if (controller == null) { controller = new TouchInteractionController(this, mLock, displayId); mTouchInteractionControllers.put(displayId, controller); } return controller; } } void onMotionEvent(MotionEvent event) { TouchInteractionController controller; synchronized (mLock) { int displayId = event.getDisplayId(); controller = mTouchInteractionControllers.get(displayId); } if (controller != null) { controller.onMotionEvent(event); } } void onTouchStateChanged(int displayId, int state) { TouchInteractionController controller; synchronized (mLock) { controller = mTouchInteractionControllers.get(displayId); } if (controller != null) { controller.onStateChanged(state); } } } core/java/android/accessibilityservice/IAccessibilityServiceClient.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityWindowInfo; import android.accessibilityservice.AccessibilityGestureEvent; import android.view.KeyEvent; import android.view.MotionEvent; /** * Top-level interface to an accessibility service component. Loading @@ -44,6 +45,10 @@ import android.view.KeyEvent; void onMagnificationChanged(int displayId, in Region region, float scale, float centerX, float centerY); void onMotionEvent(in MotionEvent event); void onTouchStateChanged(int displayId, int state); void onSoftKeyboardShowModeChanged(int showMode); void onPerformGestureResult(int sequence, boolean completedSuccessfully); Loading core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl +12 −0 Original line number Diff line number Diff line Loading @@ -122,4 +122,16 @@ interface IAccessibilityServiceConnection { oneway void logTrace(long timestamp, String where, long loggingTypes, String callingParams, int processId, long threadId, int callingUid, in Bundle serializedCallingStackInBundle); void setServiceDetectsGesturesEnabled(int displayId, boolean mode); void requestTouchExploration(int displayId); void requestDragging(int displayId, int pointerId); void requestDelegating(int displayId); void onDoubleTap(int displayId); void onDoubleTapAndHold(int displayId); } Loading
core/api/current.txt +27 −0 Original line number Diff line number Diff line Loading @@ -2994,6 +2994,7 @@ package android.accessibilityservice { } public final class AccessibilityGestureEvent implements android.os.Parcelable { ctor public AccessibilityGestureEvent(int, int, @NonNull java.util.List<android.view.MotionEvent>); method public int describeContents(); method @NonNull public static String gestureIdToString(int); method public int getDisplayId(); Loading @@ -3016,6 +3017,7 @@ package android.accessibilityservice { method public final android.accessibilityservice.AccessibilityServiceInfo getServiceInfo(); method @NonNull public final android.accessibilityservice.AccessibilityService.SoftKeyboardController getSoftKeyboardController(); method @NonNull public final java.util.List<android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction> getSystemActions(); method @NonNull public final android.accessibilityservice.TouchInteractionController getTouchInteractionController(int); method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows(); method @NonNull public final android.util.SparseArray<java.util.List<android.view.accessibility.AccessibilityWindowInfo>> getWindowsOnAllDisplays(); method public abstract void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent); Loading Loading @@ -3250,6 +3252,31 @@ package android.accessibilityservice { method public boolean willContinue(); } public final class TouchInteractionController { method public void addListener(@Nullable java.util.concurrent.Executor, @NonNull android.accessibilityservice.TouchInteractionController.Listener); method public int getDisplayId(); method public int getMaxPointerCount(); method public int getState(); method public void performClick(); method public void performLongClickAndStartDrag(); method public void removeAllListeners(); method public boolean removeListener(@NonNull android.accessibilityservice.TouchInteractionController.Listener); method public void requestDelegating(); method public void requestDragging(int); method public void requestTouchExploration(); method @NonNull public static String stateToString(int); field public static final int STATE_CLEAR = 0; // 0x0 field public static final int STATE_DELEGATING = 4; // 0x4 field public static final int STATE_DRAGGING = 3; // 0x3 field public static final int STATE_TOUCH_EXPLORING = 2; // 0x2 field public static final int STATE_TOUCH_INTERACTING = 1; // 0x1 } public static interface TouchInteractionController.Listener { method public void onMotionEvent(@NonNull android.view.MotionEvent); method public void onStateChanged(int); } } package android.accounts {
core/java/android/accessibilityservice/AccessibilityGestureEvent.java +6 −1 Original line number Diff line number Diff line Loading @@ -150,7 +150,12 @@ public final class AccessibilityGestureEvent implements Parcelable { private final int mDisplayId; private List<MotionEvent> mMotionEvents = new ArrayList<>(); /** @hide */ /** * Constructs an AccessibilityGestureEvent to be dispatched to an accessibility service. * @param gestureId the id number of the gesture. * @param displayId the display on which this gesture was performed. * @param motionEvents the motion events that lead to this gesture. */ public AccessibilityGestureEvent( int gestureId, int displayId, @NonNull List<MotionEvent> motionEvents) { mGestureId = gestureId; Loading
core/java/android/accessibilityservice/AccessibilityService.java +85 −1 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ import android.util.Slog; import android.util.SparseArray; import android.view.Display; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.SurfaceView; import android.view.WindowManager; import android.view.WindowManagerImpl; Loading @@ -65,6 +66,7 @@ import android.view.accessibility.AccessibilityWindowInfo; import com.android.internal.os.HandlerCaller; import com.android.internal.os.SomeArgs; import com.android.internal.util.Preconditions; import com.android.internal.util.function.pooled.PooledLambda; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading Loading @@ -582,6 +584,10 @@ public abstract class AccessibilityService extends Service { /** Magnification changed callbacks for different displays */ void onMagnificationChanged(int displayId, @NonNull Region region, float scale, float centerX, float centerY); /** Callbacks for receiving motion events. */ void onMotionEvent(MotionEvent event); /** Callback for tuch state changes. */ void onTouchStateChanged(int displayId, int state); void onSoftKeyboardShowModeChanged(int showMode); void onPerformGestureResult(int sequence, boolean completedSuccessfully); void onFingerprintCapturingGesturesChanged(boolean active); Loading Loading @@ -720,6 +726,12 @@ public abstract class AccessibilityService extends Service { /** List of magnification controllers, mapping from displayId -> MagnificationController. */ private final SparseArray<MagnificationController> mMagnificationControllers = new SparseArray<>(0); /** * List of touch interaction controllers, mapping from displayId -> TouchInteractionController. */ private final SparseArray<TouchInteractionController> mTouchInteractionControllers = new SparseArray<>(0); private SoftKeyboardController mSoftKeyboardController; private final SparseArray<AccessibilityButtonController> mAccessibilityButtonControllers = new SparseArray<>(0); Loading Loading @@ -1194,6 +1206,10 @@ public abstract class AccessibilityService extends Service { getFingerprintGestureController().onGesture(gesture); } int getConnectionId() { return mConnectionId; } /** * Used to control and query the state of display magnification. */ Loading Loading @@ -2209,6 +2225,16 @@ public abstract class AccessibilityService extends Service { centerX, centerY); } @Override public void onMotionEvent(MotionEvent event) { AccessibilityService.this.onMotionEvent(event); } @Override public void onTouchStateChanged(int displayId, int state) { AccessibilityService.this.onTouchStateChanged(displayId, state); } @Override public void onSoftKeyboardShowModeChanged(int showMode) { AccessibilityService.this.onSoftKeyboardShowModeChanged(showMode); Loading Loading @@ -2371,6 +2397,21 @@ public abstract class AccessibilityService extends Service { mCaller.sendMessage(mCaller.obtainMessage(DO_ON_SYSTEM_ACTIONS_CHANGED)); } @Override public void onMotionEvent(MotionEvent event) { final Message message = PooledLambda.obtainMessage( Callbacks::onMotionEvent, mCallback, event); mCaller.sendMessage(message); } @Override public void onTouchStateChanged(int displayId, int state) { final Message message = PooledLambda.obtainMessage(Callbacks::onTouchStateChanged, mCallback, displayId, state); mCaller.sendMessage(message); } @Override public void executeMessage(Message message) { switch (message.what) { Loading Loading @@ -2748,4 +2789,47 @@ public abstract class AccessibilityService extends Service { } } } /** * Returns the touch interaction controller for the specified logical display, which may be used * to detect gestures and otherwise control touch interactions. If * {@link AccessibilityServiceInfo#FLAG_REQUEST_TOUCH_EXPLORATION_MODE} is disabled the * controller's methods will have no effect. * * @param displayId The logical display id, use {@link Display#DEFAULT_DISPLAY} for default * display. * @return the TouchExploration controller */ @NonNull public final TouchInteractionController getTouchInteractionController(int displayId) { synchronized (mLock) { TouchInteractionController controller = mTouchInteractionControllers.get(displayId); if (controller == null) { controller = new TouchInteractionController(this, mLock, displayId); mTouchInteractionControllers.put(displayId, controller); } return controller; } } void onMotionEvent(MotionEvent event) { TouchInteractionController controller; synchronized (mLock) { int displayId = event.getDisplayId(); controller = mTouchInteractionControllers.get(displayId); } if (controller != null) { controller.onMotionEvent(event); } } void onTouchStateChanged(int displayId, int state) { TouchInteractionController controller; synchronized (mLock) { controller = mTouchInteractionControllers.get(displayId); } if (controller != null) { controller.onStateChanged(state); } } }
core/java/android/accessibilityservice/IAccessibilityServiceClient.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityWindowInfo; import android.accessibilityservice.AccessibilityGestureEvent; import android.view.KeyEvent; import android.view.MotionEvent; /** * Top-level interface to an accessibility service component. Loading @@ -44,6 +45,10 @@ import android.view.KeyEvent; void onMagnificationChanged(int displayId, in Region region, float scale, float centerX, float centerY); void onMotionEvent(in MotionEvent event); void onTouchStateChanged(int displayId, int state); void onSoftKeyboardShowModeChanged(int showMode); void onPerformGestureResult(int sequence, boolean completedSuccessfully); Loading
core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl +12 −0 Original line number Diff line number Diff line Loading @@ -122,4 +122,16 @@ interface IAccessibilityServiceConnection { oneway void logTrace(long timestamp, String where, long loggingTypes, String callingParams, int processId, long threadId, int callingUid, in Bundle serializedCallingStackInBundle); void setServiceDetectsGesturesEnabled(int displayId, boolean mode); void requestTouchExploration(int displayId); void requestDragging(int displayId, int pointerId); void requestDelegating(int displayId); void onDoubleTap(int displayId); void onDoubleTapAndHold(int displayId); }