Android 10では、ユーザーはフルスクリーンジェスチャーモードを有効にできます。デバイスがフルスクリーンジェスチャーモードであるかどうかを検出したいのですが、ドキュメントに何も見つかりません。プログラムで行う方法実行時に?
Javaまたはkotlin言語の答えはOKです。
公式APIまたは回避策...
ドキュメントによると、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
以下のコードを使用して、ジェスチャーまたはナビゲーションモードを確認できます
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)