diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2023-06-08 23:01:51 +0300 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2023-06-10 11:12:39 +0300 |
commit | c0e0b56055e2ed0155d4e2402319dd8f8f134e10 (patch) | |
tree | 4899a640bf67f0a9f26d8eb31b8065e0efc5e529 /src/android/jar/src/org/qtproject/qt/android/QtNative.java | |
parent | 01872d06d9a09c83f28b3ecebcb06f0ed81c5622 (diff) |
Android: improve screen size and physical size calculation
Use new api calls for calculating pixel size and physical size
of multi-display setups after some existing apis have been deprecated
in Android API 30 and 31. Also, do the physical size calculation outside
of the supported modes loop.
As for the physical size, this patch still uses xdpi/ydpi for the
calculation instead of densityDpi as suggested in [1] because from
testing few scenarios, the results returned from xdpi/ydpi are more
consistent with physical device specs.
[1] https://issuetracker.google.com/issues/194120500
Pick-to: 6.6 6.5
Task-number: QTBUG-112742
Change-Id: I0c8ef5185c8b6463830b528374954c324a32d657
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/QtNative.java')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/QtNative.java | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtNative.java b/src/android/jar/src/org/qtproject/qt/android/QtNative.java index 93bc6d8043..f9afa8ae38 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtNative.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtNative.java @@ -51,6 +51,12 @@ import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; +import android.util.Size; +import android.util.DisplayMetrics; +import android.view.WindowManager; +import android.view.WindowMetrics; +import android.graphics.Rect; + public class QtNative { private static Activity m_activity = null; @@ -412,6 +418,23 @@ public class QtNative return new ArrayList<Display>(); } + public static Size getDisplaySize(Context displayContext, Display display) + { + if (Build.VERSION.SDK_INT < 31) { + DisplayMetrics realMetrics = new DisplayMetrics(); + display.getRealMetrics(realMetrics); + return new Size(realMetrics.widthPixels, realMetrics.heightPixels); + } + + Context windowsContext = displayContext.createWindowContext( + WindowManager.LayoutParams.TYPE_APPLICATION, null); + WindowManager displayMgr = + (WindowManager) windowsContext.getSystemService(Context.WINDOW_SERVICE); + WindowMetrics windowsMetrics = displayMgr.getCurrentWindowMetrics(); + Rect bounds = windowsMetrics.getBounds(); + return new Size(bounds.width(), bounds.height()); + } + public static boolean startApplication(String params, String mainLib) throws Exception { if (params == null) |