Allows compatible games to be controlled using swipes on the fingerprint reader
DEVELOPERS: Your game should contain one (and only one) view that is focusable, focusableInTouchMode, and focused, and has an attached accessibility delegate in order to receive the fingerprint input. That accessibility delegate should use code like this:
myView.setAccessibilityDelegate(new AccessibilityDelegate()
{
public boolean performAccessibilityAction(View _v, int _action, Bundle _args)
{
if((_action == ACTION_FOCUS) && (_args != null))
{
String method = _args.getString("by4a.method");
if("FingerprintGestureCallback.onGestureDetected".equals(method))
{
int gesture = _args.getInt("by4a.arg");
switch(gesture)
{
case FINGERPRINT_GESTURE_SWIPE_LEFT:
case FINGERPRINT_GESTURE_SWIPE_DOWN:
case FINGERPRINT_GESTURE_SWIPE_RIGHT:
case FINGERPRINT_GESTURE_SWIPE_UP:
}
}
}
return super.performAccessibilityAction(_v, _action, _args);
}
});
In addition, if your game can handle orientation changes or multiwindow mode, you will probably need some code like this. We're 99% certain this is a bug in Android.
@Override public void onWindowFocusChanged(boolean _focused)
{
myView.clearFocus();
myView.requestFocus();
}
If the user enters multiwindow mode, you will need BOTH the code above, AND for the user to tap inside your pane in order to continue receiving fingerprint gesture input. This is easily accomplished by simply pausing the game when multiwindow mode is activated, requiring the user to tap on the unpause button to continue.
The usefulness of fingerprint gesture input may vary based on the placement and reliability of the fingerprint sensor and the nature of the game being played. You should provide an option to ignore fingerprint gesture input to avoid accidental and undesired input.