Как определить ориентацию устройства, используя значения датчика? - PullRequest
0 голосов
/ 18 января 2019

Попытка определить ориентацию устройства с помощью значений датчиков с помощью двух общих датчиков, доступных в каждом смартфоне Акселерометр и гироскоп.

В моем приложении я использую expo-слушатели для считывания значений с датчиков, которые имеют форму x, y, z.

  Expo.Accelerometer.addListener((results) => {

           console.log(results)
  })

выход

 Object {
    "x": 0.005248264875262976,
    "y": -0.10594243556261063,
    "z": 1.004819393157959,
  }

Теперь мой вопрос: как мне точно преобразовать эти значения x, y, z в форму угла ориентации? Возможно ли это или что без извлечения моего заявления?

Гироскоп

Акселерометр

DeviceMotion

PS: я не хочу поворачивать макеты приложений, чтобы проверить ориентацию телефона. В моем сценарии он заблокирован в портретном режиме. Просто нужен угол устройства 0,90, -90, также обратите внимание, что мое приложение зависит только от выставки.

1 Ответ

0 голосов
/ 21 января 2019

Когда ваше устройство находится в состоянии покоя, данные акселерометра в основном показывают направление гравитации в системе отсчета вашего устройства. Ваш пример вывода эквивалентен устройству, лежащему горизонтально на столе (сила тяжести в направлении оси Z).

Если вам нужен угол 0,90, -90, вы можете использовать следующую формулу (при условии, что пользователь удерживает устройство вертикально):

alpha = atan(x/y)/pi*360

Больше контекста на акселерометре: https://www.digikey.com/en/articles/techzone/2011/may/using-an-accelerometer-for-inclination-sensing

...