Проверьте, имеет ли устройство метку в обслуживании
У меня есть приложение с оверлеем, и мне нужно проверить, есть ли на устройстве метка или нет.
Обычно вы используете упражнение и вызываете следующее:
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)
}