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 ...
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
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)