As far as I recall the senors return a value every onSensorChanged-event. You can set up a thread, that reads in the values every 5 minutes.
Edit:
public class OrientationHandler implements SensorEventListener {
private SensorManager sensorManager = null;
private static float[] values = new float[3];
public OrientationHandler(Context context) {
sensorManager = (SensorManager) context
.getSystemService(Context.SENSOR_SERVICE);
sensorManager.registerListener(this, sensorManager
.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_FASTEST);
}
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
synchronized (this) {
OrientationHandler.values = event.values;
}
}
}
}
OrientationHandler.values can be accessed from outside the class (if you write yourself a public Getter-method).