Android: use one common getDisplay() method

Use one method getDisplay() which handles different API levels and call
it from various code paths instead of doing the same over and over.

Task-number: QTBUG-132716
Change-Id: I0b246631b7dd45789f01e6fa6360d8c76c13fee9
Reviewed-by: Petri Virkkunen <petri.virkkunen@qt.io>
This commit is contained in:
Assam Boudjelthia 2025-01-06 16:22:07 +02:00
parent 495f7cceb2
commit 0abdca8790
4 changed files with 22 additions and 26 deletions

View File

@ -154,7 +154,7 @@ class QtActivityDelegate extends QtActivityDelegateBase
Rect r = new Rect();
m_activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
DisplayMetrics metrics = new DisplayMetrics();
m_activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
QtDisplayManager.getDisplay(m_activity).getMetrics(metrics);
final int kbHeight = metrics.heightPixels - r.bottom;
if (kbHeight < 0) {
m_inputDelegate.setKeyboardVisibility(false, System.nanoTime());

View File

@ -45,7 +45,7 @@ class QtActivityLoader extends QtLoader {
int size = m_activity.getResources().getDimensionPixelSize(android.R.dimen.app_icon_size);
if (size < 36 || size > 512) { // check size sanity
DisplayMetrics metrics = new DisplayMetrics();
m_activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
QtDisplayManager.getDisplay(m_activity).getMetrics(metrics);
size = metrics.densityDpi / 10 * 3;
if (size < 36)
size = 36;

View File

@ -75,20 +75,9 @@ class QtDisplayManager {
};
}
@SuppressWarnings("deprecation")
static void updateRefreshRate(Context context)
{
Display display;
Activity activity = (Activity) context;
if (activity != null) {
display = (Build.VERSION.SDK_INT < Build.VERSION_CODES.R)
? activity.getWindowManager().getDefaultDisplay()
: activity.getDisplay();
} else {
final DisplayManager dm = context.getSystemService(DisplayManager.class);
display = dm.getDisplay(Display.DEFAULT_DISPLAY);
}
Display display = getDisplay(context);
float refreshRate = display != null ? display.getRefreshRate() : 60.0f;
QtDisplayManager.handleRefreshRateChanged(refreshRate);
}
@ -104,10 +93,7 @@ class QtDisplayManager {
}
static int getDisplayRotation(Activity activity) {
Display display = Build.VERSION.SDK_INT < Build.VERSION_CODES.R ?
activity.getWindowManager().getDefaultDisplay() :
activity.getDisplay();
Display display = QtDisplayManager.getDisplay(activity);
return display != null ? display.getRotation() : 0;
}
@ -231,6 +217,20 @@ class QtDisplayManager {
}
}
@SuppressWarnings("deprecation")
static Display getDisplay(Context context)
{
Activity activity = (Activity) context;
if (activity != null) {
return (Build.VERSION.SDK_INT < Build.VERSION_CODES.R)
? activity.getWindowManager().getDefaultDisplay()
: activity.getDisplay();
}
final DisplayManager dm = context.getSystemService(DisplayManager.class);
return dm.getDisplay(Display.DEFAULT_DISPLAY);
}
@UsedFromNativeCode
static Display getDisplay(Context context, int displayId)
{
@ -279,7 +279,7 @@ class QtDisplayManager {
final WindowInsets rootInsets = activity.getWindow().getDecorView().getRootWindowInsets();
final WindowManager windowManager = activity.getWindowManager();
Display display;
Display display = QtDisplayManager.getDisplay(activity);
int insetLeft;
int insetTop;
@ -288,8 +288,6 @@ class QtDisplayManager {
int maxHeight;
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
display = windowManager.getDefaultDisplay();
final DisplayMetrics maxMetrics = new DisplayMetrics();
display.getRealMetrics(maxMetrics);
maxWidth = maxMetrics.widthPixels;
@ -298,8 +296,6 @@ class QtDisplayManager {
insetLeft = rootInsets.getStableInsetLeft();
insetTop = rootInsets.getStableInsetTop();
} else {
display = activity.getDisplay();
final WindowMetrics maxMetrics = windowManager.getMaximumWindowMetrics();
maxWidth = maxMetrics.getBounds().width();
maxHeight = maxMetrics.getBounds().height();

View File

@ -275,7 +275,7 @@ class QtInputDelegate implements QtInputConnection.QtInputConnectionListener, Qt
Rect r = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
QtDisplayManager.getDisplay(activity).getMetrics(metrics);
int screenHeight = metrics.heightPixels;
final int kbHeight = screenHeight - r.bottom;
isKeyboardHidden = kbHeight < screenHeight * KEYBOARD_TO_SCREEN_RATIO;
@ -359,7 +359,7 @@ class QtInputDelegate implements QtInputConnection.QtInputConnectionListener, Qt
private boolean updateSoftInputMode(Activity activity, int height)
{
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
QtDisplayManager.getDisplay(activity).getMetrics(metrics);
// If the screen is in portrait mode than we estimate that keyboard height
// will not be higher than 2/5 of the screen. Otherwise we estimate that keyboard height
@ -401,7 +401,7 @@ class QtInputDelegate implements QtInputConnection.QtInputConnectionListener, Qt
if (!m_keyboardIsVisible)
return;
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
QtDisplayManager.getDisplay(activity).getMetrics(metrics);
Rect r = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
if (metrics.heightPixels != r.bottom) {