web-dev-qa-db-ja.com

Android 10で全画面ジェスチャーモードを検出する方法

Android 10では、ユーザーはフルスクリーンジェスチャーモードを有効にできます。デバイスがフルスクリーンジェスチャーモードであるかどうかを検出したいのですが、ドキュメントに何も見つかりません。プログラムで行う方法実行時に?

Javaまたはkotlin言語の答えはOKです。

公式APIまたは回避策...

14
Jaya Prakash

ドキュメントによると、getSystemGestureInsets()を使用してジェスチャースペースの領域を取得できます: https://developer.Android.com/reference/Android/view/WindowInsets.html#getSystemGestureInsets()

ゼロの場合、無効になります

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

ただし、Android Qのデバイスがないため、間違っている可能性があります

私はこの記事でそれを見つけました: https://developer.Android.com/preview/features/gesturalnav

2
Dima Rostopira

以下のコードを使用して、ジェスチャーまたはナビゲーションモードを確認できます

    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;
    }

IsEdgeToEdgeEnabled関数によって返される値は以下のとおりです。

  • 0:ナビゲーションは3つのボタンで表示されます

  • 1:ナビゲーションは2ボタンで表示されます(Android Pナビゲーションモード)

  • 2:全画面ジェスチャー(ジェスチャーAndroid Q)

0
Trung Đoan