isGestureDetectionAvailable () всегда возвращает False - PullRequest
0 голосов
/ 09 ноября 2019

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

Я применил все в соответствии с кодом, указанным на официальном сайте разработчика 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>

Это мой сервис.

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" />

1 Ответ

0 голосов
/ 12 ноября 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...