Я пытаюсь использовать магнитное поле и акселерометр для расчета ориентации.Тем не менее, вычисленные значения Az, Pitch и Roll равны 0. Вот код:
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
Log.e(TAG, "Sensor Changed");
float[] r = new float[9];
float[] i = new float[9];
float[] accValues = new float[3];
float[] geoVallues = new float[3];
}
if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
Log.e(TAG, "Accelerometer Changed");
accValues = event.values.clone();
}
if(event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
Log.e(TAG, "Magnetif Field Changed");
geoVallues = event.values.clone();
}
if (accValues != null && geoVallues != null) {
SensorManager.getRotationMatrix(r, i, accValues, geoVallues);
float[] v = new float[3];
SensorManager.getOrientation(r, v);
oriView.setText("Orientation:\nAz=" + Math.toDegrees((v[0])) + "\nPitch=" + Math.toDegrees((v[1])) + "\nRoll=" + Math.toDegrees((v[2])));
}
}
Есть идеи, что случилось?