0

I am trying to detect gestures on a fingerprint scanner. I have made an Accessibility service and yet I get back "False" for this method isGestureDetectionAvailable(). However, my device is capable of detecting the gestures.

I have applied everything according to the code mentioned on the official Android developer website.

This is my Android Manifest Code.

<application
 .....>
    <service
        android:name=".AccessibilityService"
        android:enabled="true"
        android:exported="true"
        android:label="My application"

android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
        <intent-filter>
            <action 
android:name="android.accessibilityservice.AccessibilityService" />
        </intent-filter>

        <meta-data
            android:name="android.accessibilityservice"
            android:resource="@xml/my_gesture_service" />
    </service>

This is my Service.

public class AccessibilityService extends 
android.accessibilityservice.AccessibilityService {
private static final String TAG = 
AccessibilityService.class.getSimpleName();
@Override
public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
    Log.d("ACCEVENT", accessibilityEvent.toString());
}

@Override
public void onInterrupt() {
    Log.d("ACCEVENT", "onAccessibilityEvent Inturupt");
}

@Override
protected void onServiceConnected() {
    super.onServiceConnected();
    Log.d(TAG, "onServiceConnected");

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

        FingerprintGestureController gestureController = getFingerprintGestureController();

        Toast.makeText(getApplicationContext(), "Is available: " + gestureController.isGestureDetectionAvailable(), Toast.LENGTH_LONG).show();
        Log.e(TAG, "Is available: " + gestureController.isGestureDetectionAvailable() );

        FingerprintGestureController.FingerprintGestureCallback callback = new
                FingerprintGestureController.FingerprintGestureCallback() {
                    @Override
                    public void onGestureDetectionAvailabilityChanged(boolean available) {
                        super.onGestureDetectionAvailabilityChanged(available);
                        Toast.makeText(getApplicationContext(), "Gesture available change to: " + available, Toast.LENGTH_SHORT).show();
                        Log.d(TAG, "onGestureDetectionAvailabilityChanged " + available);
                    }

                    @Override
                    public void onGestureDetected(int gesture) {
                        super.onGestureDetected(gesture);
                        Toast.makeText(getApplicationContext(), "Gesture: " + gesture, Toast.LENGTH_SHORT).show();
                        Log.d(TAG, "onGestureDetected " + gesture);
                    }
                };

        gestureController.registerFingerprintGestureCallback(callback, null);
    }
}

@Override
public boolean onUnbind(Intent intent) {
    Log.d(TAG, "onUnbind " );
    return super.onUnbind(intent);
}

}

This is my XML code for the service

<accessibility-service 
xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagDefault|flagRequestFingerprintGestures"
android:canRequestFingerprintGestures="true" />
Nitin Vats
  • 51
  • 10

1 Answers1

0

How do you know that your device supports gestures? Does TalkBack work with them? Otherwise, it's possible that the hardware vendor didn't report that the hardware detects gestures.

Phil Weaver
  • 738
  • 3
  • 7