#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:
я думаю, что датчик акселерометра используется для определения того, было ли устройство наклонено ВВЕРХ или вниз…