Для приложения в стиле Labyrinth вам, скорее всего, важнее вектор ускорения (гравитации), чем ориентация осей.Этот вектор в системе координат телефона задается комбинацией трех измерений акселерометра, а не углов поворота.В частности, только движения x и y должны влиять на движение шара.
Если вам действительно нужна ориентация, то 3 угловых значения представляют 3 угла Эйлера,Однако, я подозреваю, что вам, вероятно, не нужны сами углы, а скорее матрица вращения R , которая возвращается API getRotationMatrix () .Если у вас есть эта матрица, то - это в основном та калибровка, которую вы ищете.Если вы хотите преобразовать вектор в мировых координатах в координаты вашего устройства, вы должны умножить его на обратный этой матрицы (где в этом особом случае inv ( R ) = transpose( R ).
Итак, следуя примеру, который я нашел в документации, если вы хотите преобразовать вектор мировой гравитации g ([0 0 g])к координатам устройства, умножьте его на inv ( R ):
g = inv ( R ) * g
(обратите внимание, что это должно дать вам тот же результат, что и чтение акселерометров)
Возможные API для использования здесь: invertM () и multiplyMV () методы матричного класса.