Главная » Разработка для Android » Переопределение системы отсчета

0

Чтобы  вычислить положение  устройства  в пространстве  с помощью системы отсчета, отличной от стандартной (описанной выше), используйте метод remapCoordinateSystem из объекта SensorManager.

Ранее в этой главе стандартная система отсчета описывалась таким об- разом, что устройство должно было лежать на плоской поверхности экраном вверх. Подобный подход позволяет вам изменять систему координат для вычисления положения в пространстве.  Таким  образом, положение,  при котором устройство  расположено  вертикально, можно обозначить  как со- стояние покоя.

Метод remapCoordinateSystem принимает  четыре параметра:

исходная матрица поворота, получаемая  методом getRotationMatrix, как описывалось ранее;

переменная, используемая для хранения конечной (преобразованной)

матрицы поворота;

переопределенная ось X;

переопределенная ось Y.

Два последних  параметра  используются для указания новой системы отсчета. Эти значения  определяют  новые оси X и Y, смещенные  относи- тельно стандартных.  Класс SensorManager предоставляет набор констант, позволяющих указывать  значения  для осей: AXIS_X,  AXIS_Y, AXIS_Z, AXIS_MINUS_X, AXIS_MINUS_Y и AXIS_MINUS_Z.

В листинге 14.5 показывается, как переопределить систему отсчета та- ким образом, чтобы состояние покоя наступало, когда устройство располо- жено вертикально в портретном  режиме, экран повернут  к пользователю (рис.14.3).

Листинг 14.5.

SensorManager.getRotationMatrix(R, null, aValues, mValues);

float[] outR = new float[9]; SensorManager.remapCoordinateSystem(R,

SensorManager.AXIS_X, SensorManager.AXIS_Z, outR);

SensorManager.getOrientation(outR, values);

// Преобразуйте радианы в градусы.

values[0] = (float) Math.toDegrees(values[0]); values[1] = (float) Math.toDegrees(values[1]); values[2] = (float) Math.toDegrees(values[2]);

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии