isGestureDetectionAvailable() всегда возвращает False

Я пытаюсь обнаружить жесты на сканере отпечатков пальцев. Я создал службу специальных возможностей, но для этого метода isGestureDetectionAvailable() я получаю значение False. Однако мое устройство способно обнаруживать жесты.

Я применил все в соответствии с кодом, указанным на официальном сайте разработчика Android.

Это мой код манифеста Android.

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

}

Это мой XML-код для службы

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

person Nitin Vats    schedule 09.11.2019    source источник


Ответы (1)


Как узнать, что ваше устройство поддерживает жесты? Работает ли с ними TalkBack? В противном случае возможно, что производитель оборудования не сообщил, что оборудование обнаруживает жесты.

person Phil Weaver    schedule 11.11.2019
comment
он поддерживает жесты, так как выполняет другие собственные функции при обнаружении жестов. - person Nitin Vats; 28.01.2020