// First, get an instance of the SensorManager
SensorManager sMan = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
// Second, get the sensor you're interested in
Sensor magnetField = sMan.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
// Third, implement a SensorEventListener class
SensorEventListener magnetListener = new SensorEventListener() {
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// do things if you're interested in accuracy changes
}
public void onSensorChanged(SensorEvent event) {
// implement what you want to do here
}
};
// Finally, register your listener
sMan.registerListener(magnetListener, magnetField, SensorManager.SENSOR_DELAY_NORMAL);
Однако обратите внимание, что это на самом деле магнитный датчик;поэтому, если у вас есть магнитные помехи вокруг вас, это может указывать в неправильном направлении.Кроме того, вам нужно знать разницу между истинным севером и магнитным севером.Поскольку в этом коде используется магнитный датчик, вы получаете Магнитный север, но если вам необходимо рассчитать истинный север, вам нужно будет выполнить некоторые корректировки с помощью GeomagneticField.getDeclination()
.