7

を働いていません。私はFingerprintGestureControllerを使ってジェスチャーコールバックを取得しようとしているが、私は設定 - >アクセシビリティからこのアプリのアクセシビリティ機能をONにした後も復帰に任意のジェスチャーを取得したことがないのです。 isGestureDetectionAvailable()は常に私にfalseを返します。誰かが助けてくれますか?アンドロイドO - 指紋ジェスチャーコールバック私は、アクセシビリティから指紋ジェスチャーONの画素デバイス上でテストしてい

my_gesture_service.xml

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

のAndroidManifest.xml

<uses-feature android:name="android.hardware.fingerprint"/> 
    <uses-permission android:name="android.permission.USE_FINGERPRINT" /> 
    <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/> 
<service 
      android:name="android.gestures.MyService" 
      android:label="@string/app_name" 
      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> 

MyService.java

:ここ

コードであります

public class MyService extends AccessibilityService { 

    private static final String TAG = MyService.class.getSimpleName(); 

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

    @Override 
    public void onInterrupt() { 
     Log.d(TAG, "onInterrupt"); 
    } 

    @Override 
    protected boolean onGesture(int gestureId) { 
     Log.d(TAG, "onGesture " + gestureId); 
     return super.onGesture(gestureId); 
    } 

    @Override 
    protected boolean onKeyEvent(KeyEvent event) { 
     Log.d(TAG, "onKeyEvent " + event.getKeyCode()); 
     return super.onKeyEvent(event); 
    } 

    @Override 
    public void onDestroy() { 
     Toast.makeText(getApplicationContext(), "onDestroy" , Toast.LENGTH_SHORT).show(); 
     super.onDestroy(); 
    } 



    @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, new Handler()); 
     } 
    } 

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


} 

答えて

9

は答えを見つけました。

android:accessibilityFlags="flagDefault|flagRequestFingerprintGestures" 
:私はXMLで、あまりにもこの1つのフラグを必要と