How to dispatch gesture from AccessibilityService onGesture

150 Views Asked by At

I'm trying to build an app that can detect different gestures and then perform some action. I'm able to detect gestures using AccessibilityService onGesture method.

But I want to dispatch the gesture so that user actions are not blocked. How can I dispatchGesture from AccessibilityService onGesture method

public class MyAccessibilityService extends AccessibilityService {

    private static final String TAG = "MyAccessibilityService";

    @Override
    public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
        Log.d(TAG, "onAccessibilityEvent: " + accessibilityEvent.getEventType());
    }

    @Override
    public void onInterrupt() {
        Log.e(TAG, "onInterrupt: something went wrong");
    }

    @Override
    public boolean onGesture(@NonNull AccessibilityGestureEvent gestureEvent) {
        super.onGesture(gestureEvent);
        int gestureId = gestureEvent.getGestureId();

        GestureDescription.Builder gestureBuilder = new GestureDescription.Builder();

        Log.d(TAG, "onGesture: Gesture Detected " + gestureId);
        switch (gestureId){
            case 17:
                Log.d(TAG, "onGesture: Double Tap Happened");
        }

        GestureDescription gestureDescription = new GestureDescription.Builder().build();
        dispatchGesture(gestureDescription, new GestureResultCallback() {
            @Override
            public void onCompleted(GestureDescription gestureDescription) {
                super.onCompleted(gestureDescription);                
            }

            @Override
            public void onCancelled(GestureDescription gestureDescription) {
                super.onCancelled(gestureDescription);                
            }
        }, null);

        return true;
    }

}
0

There are 0 best solutions below