Есть ли способ получить ориентацию устройства Android и сопоставить его с координатами в вертикальной плоскости? - PullRequest
1 голос
/ 20 мая 2019

Я делаю игру для андроида, которая требует знания абсолютной ориентации устройства, предполагая одно ребро неподвижно.Игра, которую я делаю, включает в себя размах устройства в случайных направлениях.Мне нужно определить качание и направление качания.

При этом устройство сначала находится в ландшафтном режиме, а край, ближайший к пользователю (нижний край в портретном режиме), можно считать равнымпостоянно (небольшое движение не имеет значения)

Мне нужно знать только ориентацию оси, идущей по длине устройства.«крен» вокруг этой оси не имеет значения, необходима только ориентация этой оси.

Затем мне нужно отобразить эту ориентацию оси в вертикальной плоскости экрана моего ноутбука.То есть, предполагая, что нижний край (в портретном режиме) неподвижен и в начале координат, мне нужно знать положение верхнего края в виде координат (x, y), которые могут быть показаны на экране.

Я прочитал о датчике TYPE_ROTATION_VECTOR и попробовал приведенный ниже код, который использует методы getRotationMatrixFromVector () и getOrientation () для получения ориентации.Однако я не мог понять, что именно представляют собой эти значения и как их можно использовать для этой цели.

public void onSensorChanged(SensorEvent event) {
        SensorManager.getRotationMatrixFromVector(rotationMatrix, event.values);
        SensorManager.remapCoordinateSystem(rotationMatrix,
                SensorManager.AXIS_X, SensorManager.AXIS_Z, remappedRotationMatrix);
        SensorManager.getOrientation(remappedRotationMatrix, orientations);
        for (int i = 0; i < 3; i++) orientations[i] = event.values[i];
            orientations[i] = (float) Math.toDegrees(orientations[i]);
}

Также есть ли какой-либо другой способ лучше, чем использование датчика TYPE_ROTATION_VECTOR?Я держал устройство в определенной ориентации, затем после поворота устройства в течение 2-3 секунд и поддержания его в точно такой же ориентации оно показало отклонение до 20 градусов или около того.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...