isGestureDetectionAvailable()始终返回False [英] isGestureDetectionAvailable() always returning False

查看:79
本文介绍了isGestureDetectionAvailable()始终返回False的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试检测指纹扫描仪上的手势.我已经提供了辅助功能服务,但是对于此方法isGestureDetectionAvailable(),我却获得了"False".但是,我的设备能够检测到手势.

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.

我已经按照Android开发者官方网站上提到的代码应用了所有内容.

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

这是我的Android清单代码.

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>

这是我的服务.

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代码

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

推荐答案

您如何知道您的设备支持手势?话语提示与他们合作吗?否则,硬件供应商可能没有报告硬件检测到手势.

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.

这篇关于isGestureDetectionAvailable()始终返回False的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆