This shouldn't be that hard.
This code in the Code Snippets PDF:
Sub GetOrientation As Int
Dim r As Reflector
r.Target = r.GetContext
r.Target = r.RunMethod2("getSystemService", "window", "java.lang.String")
r.Target = r.RunMethod("getDefaultDisplay")
Return r.RunMethod("getOrientation")
End Sub
Says:
The orientations are:
Smartphones Tablets
0 = portrait 0 = landscape
1 = landscape turn left 1 = portrait turn left
2 = portrait upside down 2 = landscape upside down
3 = landscape turn right 3 = portrait turn right
And this code from Snippets to determine it is a tablet:
Sub Activity_Create(FirstTime As Boolean)
If GetDevicePhysicalSize > 6 Then
'7'' or 10'' tablet
Else
'phone
End If
End Sub
Sub GetDevicePhysicalSize As Float
Dim lv As LayoutValues
lv = GetDeviceLayoutValues
Return Sqrt(Power(lv.Height / lv.Scale / 160, 2) + Power(lv.Width / lv.
Scale / 160, 2))
End Sub
This is accurate on my Insignia 10.1 inch tablet and on my Samsung Galaxy S7 Phone but on my 7"
Nexus Tablet GetOrientation reports the same as the Phone and GetDevicePhysicalSize says 6.9" (Tablet).
I am really trying to follow the rules here. It seems like, 99.9% of the time you can just check if Activity.width is greater than Activity.Height. I am told this is useless without the scale but I am only running 66% using the recommended method.
I just need to move some views around depending on orientation.
How do I reliably get the screen orientation?