Я разрабатываю приложение Android 2.2 .
Я хочу знать, когда пользователь перемещает устройство вверх или вниз и когда оно перемещается влево или вправо. Устройство будет в состоянии покоя при вертикальной установке. Другими словами, использование камеры (ось Y вдоль оси камеры) для приложения дополненной реальности, где необходимы углы поворота:
remapCoordinateSystem(inR, AXIS_X, AXIS_Z, outR);
Это мой код:
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
accelValues = event.values;
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
magneValues = event.values;
updateOrientation(calculateOrientation());
}
private float[] calculateOrientation() {
float[] values = new float[3];
float[] R = new float[9];
float[] outR = new float[9];
SensorManager.getRotationMatrix(R, null, accelValues, magneValues);
SensorManager.remapCoordinateSystem(R,
SensorManager.AXIS_X,
SensorManager.AXIS_Z,
outR);
SensorManager.getOrientation(outR, values);
// Convert from Radians to Degrees.
values[0] = (float) Math.toDegrees(values[0]); // Azimuth, rotation around Z
values[1] = (float) Math.toDegrees(values[1]); // Pitch, rotation around X
values[2] = (float) Math.toDegrees(values[2]); // Roll, rotation around Y
return values;
}
но я не уверен, как узнать, перемещает ли пользователь устройство влево или вправо.
И, как я могу узнать, если пользователь гуляет?
Есть азимут, шаг и бросок, но я не знаю, как я могу использовать эти значения.
Любой совет?