Проверьте, имеет ли устройство метку в обслуживании

У меня есть приложение с оверлеем, и мне нужно проверить, есть ли на устройстве метка или нет.

Обычно вы используете упражнение и вызываете следующее:

activity.getWindow().getDecorView().getRootWindowInsets().getDisplayCutout()

Любой альтернативный способ проверить на наличие надреза, который также работает в службе? Мне нужно отрегулировать оверлей, если на устройстве есть метка...

Любой способ узнать, имеет ли устройство метку или нет, если я могу получить доступ только к WindowManager?

1 ответ

В настоящее время невозможно определить, имеет ли устройство экран надреза с Android API (Android

    int statusBarHeight = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        statusBarHeight = getResources().getDimensionPixelSize(resourceId);
    }


  // DP to Pixels

    public static int convertDpToPixel ( float dp){
        DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
        float px = dp * (metrics.densityDpi / 160f);
        return Math.round(px);
    }

   // Make UI adjustments as per your requirement

    if (statusBarHeight > convertDpToPixel(24)) {
        RelativeLayout.LayoutParams topbarLp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        topbarlp.setMargins(0, statusBarHeight, 0, 0);
        topbar.setLayoutParams(topbarlp)
    }
Другие вопросы по тегам