Какой датчик следует использовать, чтобы определить, было ли устройство наклонено ВВЕРХ или вниз с помощью датчика Android

#android #android-sensors

#Android #android-датчики

Вопрос:

Какой датчик следует использовать, чтобы определить, было ли устройство наклонено вверх или вниз с помощью датчика Android?

Используя следующий код:

 SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel,mValuesMagnet);
SensorManager.remapCoordinateSystem(mRotationMatrix,
SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, R2);
SensorManager.getOrientation(R2, mValuesOrientation);
 

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

Ответ №1:

Чтобы получить наклон устройства, а также другие углы атаки, вам необходимо зарегистрировать прослушиватель для событий TYPE_ACCELEROMETER и TYPE_MAGNETIC_FIELD:

 mngr = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

accelerometer = mngr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
magneticField = mngr.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);

int rate = SensorManager.SENSOR_DELAY_GAME; // or other
mngr.registerListener(sensorListener, accelerometer, rate);
mngr.registerListener(sensorListener, magneticField, rate);
 

После активации прослушивателя вам нужно будет вызвать

   SensorManager.getOrientation()
 

для получения текущих значений азимута (z), тангажа (x) и крена (y).

Углы ориентации

Вы можете найти подробный пример кода здесь: http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html

Ответ №2:

я думаю, что датчик акселерометра используется для определения того, было ли устройство наклонено ВВЕРХ или вниз…