Я тестировал этот код на устройстве Xiaomi, используя метод двух жестов навигации, и у меня он работает:
Point p = new Point();
getWindow().getWindowManager().getDefaultDisplay().getRealSize(p);
ConstraintLayout container = findViewById(your activity main view (e.g linearLayout));
final TypedArray styledAttributes = getTheme().obtainStyledAttributes(
new int[]{android.R.attr.actionBarSize});
int mActionBarSize = (int) styledAttributes.getDimension(0, 0);
int height = container.getMeasuredHeight();
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
int result = 0;
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
if (height + mActionBarSize + result >= p.y) {
//you have fullscreen gesture navigation
}else{
//navigation bar or similiar
}
Это работает, потому что приложение теперь может принимать больший размер на экране, поэтому оно работает толькоесли метод навигации жестами не создает фон «панели навигации».
Просто убедитесь, что используете его, когда главное уже загружено и видно, в противном случае он вернет 0.