Compass

Some Android devices and iOS devices have an integrated magnetic field sensor that provides information on how the device is oriented with respect to the magnetic north pole.

NOTE: The compass is currently not available on iOS devices since there is no implementation in the RoboVM - backend yet. The compass appears to be present with the Intel MOE backend on iOS.

Querying whether the compass is available works as follows:

boolean compassAvail = Gdx.input.isPeripheralAvailable(Peripheral.Compass);

Once you determined that the compass is indeed available, you can poll its state:

float azimuth = Gdx.input.getAzimuth();
float pitch = Gdx.input.getPitch();
float roll = Gdx.input.getRoll();

The angles are given in degrees. Here’s the interpretation of these values:

  • The azimuth is the angle of the device’s orientation around the z-axis. The positive z-axis points towards the earths center.
  • The pitch is the angle of the device’s orientation around the x-axis. The positive x-axis roughly points to the west and is orthogonal to the z- and y-axis.
  • The roll is the angle of the device’s orientation around the y-axis. The positive y-axis points toward the magnetic north pole of the earth while remaining orthogonal to the other two axes.

Here’s an illustration of the axis relative to the earth.

images/compass.png