I filed another bug about this at: https://bugreports.qt.io/browse/QTBUG-66168 which takes the view that it could be better, but that's not correct, Qt has it wrong, at least on android.
Originally described in commercial support ticket inc-1140300
I am opening this as new because I can no longer work around this issue. I have urgent need to get this working on Android, where the other issue I mentioned is about providing uniform axis ranges across platforms.
Converting from real terms to the Qt axis:
|Measurement||Axis||Android Range||Qt Range||Qt-And Disposition||IOS||Qt-IOS Disposition|
|Pitch||X||-pi - pi||-90 - 90||Differ||-pi/2 - pi/2||Agree*|
|Roll||Y||-pi/2 - pi/2||-180 - 180||Differ||-pi - pi||Agree|
|Azimuth||Z||-pi - pi||-180 - 180||Agree||-pi - pi||Agree|
- the iOS method does not accurately indicate angle, as I am complaining about, and this is recognized as a short coming of the API. The advice is to "look at Z" and it's sign will indicate if it's pointing up or down.
As I've described in several places, the pitch sensor is wrong because it reads -theta as theta, that is, as shown in the attached ADV images, Qt reports pitch as the same value, when they are actually different. As a result I cannot tell if the phone is pointed at the ground or the sky.
The range reported for pitch needs to be -180 to 180, not -90 to 90.
The successful test case is when the Qt reading match the AVD readings.
Given anything at all, that's the wrong thing to do. If Qt wants to provide platform- independent readings, then Qt needs to use -180 to 180 for all axis, or only provide what is coming from the device, but not map Android axis ranges to iOS's.