Я работаю над проектом android, в котором мне нужно определять точное направление, когда пользователь поворачивает (т.е. влево / вправо / внизу / вверх). Я использую датчик акселерометра для получения координат, но я не знаю, как обнаружить движение.
, поэтому мой вопрос:
Как узнать, что пользователь перемещает устройство в нижнем / верхнем направлении? и как это сделать что-то в соответствии с движением?
Это мой фрагмент кода:
@Override
public void onSensorChanged(SensorEvent event) {
float[] values = event.values;
long currentTime = System.currentTimeMillis();
if ((currentTime - lastUpdate) > 1000) {
lastUpdate = currentTime;
int sensorType = event.sensor.getType();
switch (sensorType) {
case Sensor.TYPE_ACCELEROMETER:
mAccelerometerData = event.values.clone();
break;
case Sensor.TYPE_MAGNETIC_FIELD:
mMagnetometerData = event.values.clone();
break;
default:
return;
}
float[] rotationMatrix = new float[9];
boolean rotationOk =
SensorManager.getRotationMatrix(rotationMatrix, null, mAccelerometerData, mMagnetometerData);
float[] rotationMatrixAdjust = new float[9];
switch (display.getRotation()) {
case ROTATION_0:
rotationMatrixAdjust = rotationMatrix.clone();
break;
case ROTATION_90:
SensorManager.remapCoordinateSystem(rotationMatrix,
SensorManager.AXIS_Y,
SensorManager.AXIS_MINUS_X,
rotationMatrixAdjust);
break;
case ROTATION_180:
SensorManager.remapCoordinateSystem(rotationMatrix,
SensorManager.AXIS_MINUS_X, SensorManager.AXIS_MINUS_Y,
rotationMatrixAdjust);
break;
case ROTATION_270:
SensorManager.remapCoordinateSystem(rotationMatrix,
SensorManager.AXIS_MINUS_Y, SensorManager.AXIS_X,
rotationMatrixAdjust);
break;
}
float[] orientationValues = new float[3];
if (rotationOk) {
SensorManager.getOrientation(rotationMatrixAdjust,
orientationValues);
}
float azimuth = orientationValues[0];
float pitch = orientationValues[1];
float roll = orientationValues[2]
}
Заранее спасибо.