Вопрос по повороту оси X на Android - PullRequest
1 голос
/ 19 июля 2010

Я хочу определить правильные повороты вокруг оси X с помощью датчиков Android. После поиска в Google, я нахожу этот код:

   public void onSensorChanged(SensorEvent event) {
   Sensor sensor = event.sensor;
   switch(sensor.getType()) {
   case Sensor.TYPE_ACCELEROMETER:
    mAcc = event.values.clone();
    break;
   case Sensor.TYPE_MAGNETIC_FIELD:
    mMag = event.values.clone();
    break;
   }
   if (mAcc == null || mMag == null) return;

   float R[] = new float[9];
   if (SensorManager.getRotationMatrix(R, null, mAcc, mMag)) {
    SensorManager.getOrientation(R, mOrientation);
   }
  }

mOrientation [1] представляет радианы вокруг оси X. Однако значение очень странное.

  1. Когда телефон лежит на столе, он равен 0.
  2. Когда голова телефона указывает на землю, это PI / 2.
  3. Когда телефон лежит на столе плоским дном, снова 0.
  4. Когда голова телефона указывает на небо, это -PI / 2.

Состояния между 1,2 имеют те же значения вращения, что и между 2,3. Как я могу узнать, в каком состоянии находится мой телефон?

1 Ответ

0 голосов
/ 05 марта 2011

Пожалуйста, проверьте ваши показания.

Знаки и диапазон, о которых вы сообщаете, полностью не синхронизированы с
что ожидается на устройстве Android.

developer.android.com / ссылка / Android / оборудование / Sensor.html # TYPE_ORIENTATION

Примечание: этот тип датчика существует по устаревшим причинам, пожалуйста, используйте getRotationMatrix () в сочетании с remapCoordinateSystem () и getOrientation () для вычисления этих значений вместо этого.

Привет
CVS @ 2600Hertz

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