Я пытаюсь получить направление компаса в градусах (т.е. 0-360), используя следующий метод:
float[] mGravity;
float[] mGeomagnetic;
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
mGravity = event.values;
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
mGeomagnetic = event.values;
if (mGravity != null && mGeomagnetic != null) {
float R[] = new float[9];
float I[] = new float[9];
boolean success = SensorManager.getRotationMatrix(R, I, mGravity,
mGeomagnetic);
if (success) {
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
float azimut = orientation[0];
bearing.setText("Bearing: "+ azimut);
}
}
}
Значение азимута (т.е. orientation[0]
) должно быть 0‹=азимут‹360, но я получаю только значения от -3 до 3, когда поворачиваю свое устройство. Может кто-нибудь, пожалуйста, скажите мне, в чем может быть проблема, пожалуйста?