Hallo,
ich erhalte bei realen und jetzt sogar bei virtuellen Geräten manchmal falsche Werte beim Auslesen der Bildschirmgröße. Ist das normal oder mache ich da was falsch?
Hier mein Code:
Sub Activity_Create(FirstTime As Boolean)
'
If FirstTime Then
...
End If
'
Dim lv As LayoutValues
lv = GetDeviceLayoutValues
Breit = lv.Width
Hoch = lv.Height
F = lv.Scale
...
Beispiel mit einem realen Gerät:
bei einem Galaxy Tab2 (SM-T819) 2048x1536 9,7" QXGA mit Android-6 wurde 1536x1152 ausgelesen
Besipiel mit einem virtuellen Gerät:
bei einem Nexus6 ebenfalls mit 2048x1536 wurde 2048x0 ausgelesen
Da ich die ausgelesenen Werte in einer internen Log-Datei mitspeichere bin ich mir da auch zu 100% sicher.
Ich habe keine Ahnung ob das nur unter Android6 so ist, bisher ist es mir zumindest unter anderen Versionen noch nie aufgefallen.
Sub Activity_Create(FirstTime As Boolean)
Log(GetDeviceLayoutValues.ApproximateScreenSize)
Log(GetDeviceLayoutValues.Height)
Log(GetDeviceLayoutValues.Scale)
Log(GetDeviceLayoutValues.Width)
End Sub
Mit meinen Geräten, Samsung Galaxy S6 und Samsung Galxy Tab S2 beide mit Android 6, sind die Werte richtig.
.
bekomme hier auch teilweise falsche Werte.
getdevice 1080 x 1920, scale = 3.0 (480 dpi)
werden mir angezeigt bei einem OnePlus3 mit Android 7.0
Die Auflösung stimmt ja aber es sind wohl nur 401 dpi,
so wird es jedenfalls auch beworben und bei der App CPU X angezeigt.
Android hat die dpi Werte normalisiert, wo 160 der Grundwert ist..
dpi Werte 120, 160, 240, 320, 480.
Scale Werte 0.75, 1, 1.5, 2, 3
Die physikalischen Werte in den Geräten können aber verschieden sein, wie in deinem Fall.
Dann setzt Android den nähesten 'normalisierten' Wert, in deinem Fall 480.