German falsche Werte beim Auslesen der Bildschirmdaten

peternmb

Well-Known Member
Licensed User
Longtime User
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
...
 

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo Klaus,

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.
 

klaus

Expert
Licensed User
Longtime User
Versuch mal folgenden Code:
B4X:
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.
.
 

Joe73

Active Member
Licensed User
Hallo,

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.

Gruß Jürgen
 

klaus

Expert
Licensed User
Longtime User
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.
 
Top