web-dev-qa-db-fra.com

Comment détecter le mode gestuel plein écran dans Android 10

Dans Android 10, les utilisateurs peuvent activer le mode gestuel plein écran. Je veux détecter si l'appareil est en mode gestuel plein écran ou non. Je ne trouve rien dans la documentation. Comment le faire par programmation lors de l'exécution?

La réponse en langage Java ou kotlin est OK.

Toute API officielle ou solution de contournement ...

14
Jaya Prakash

Selon les documents, vous pouvez obtenir une zone d'espace gestuel en utilisant getSystemGestureInsets(): https://developer.Android.com/reference/Android/view/WindowInsets.html#getSystemGestureInsets ()

Si c'est zéro, alors il est désactivé

    ViewCompat.setOnApplyWindowInsetsListener(view, (v, insets) -> {
        if (insets.getSystemGestureInsets().bottom == 0 
            && insets.getSystemGestureInsets().left == 0
            && insets.getSystemGestureInsets().right == 0) 
        {
            //gestures enabled
        }
        return insets.consumeSystemWindowInsets();
    });

Cependant, je n'ai pas d'appareil avec Android Q, et je peux me tromper

Je l'ai trouvé dans cet article: https://developer.Android.com/preview/features/gesturalnav

2
Dima Rostopira

Vous pouvez utiliser le code ci-dessous pour vérifier le mode gestuel ou de navigation

    public static int isEdgeToEdgeEnabled(Context context) {
        Resources resources = context.getResources();
        int resourceId = resources.getIdentifier("config_navBarInteractionMode", "integer", "Android");
        if (resourceId > 0) {
            return resources.getInteger(resourceId);
        }
        return 0;
    }

La valeur renvoyée par la fonction isEdgeToEdgeEnabled suivra ci-dessous:

  • 0: la navigation s'affiche avec 3 boutons

  • 1: La navigation s'affiche avec 2 boutons (mode de navigation Android P)

  • 2: geste en plein écran (geste sur Android Q)

0
Trung Đoan