diff --git a/app/src/main/java/com/jens/automation2/receivers/DeviceOrientationListener.java b/app/src/main/java/com/jens/automation2/receivers/DeviceOrientationListener.java index 9fcc94b4..408c1708 100644 --- a/app/src/main/java/com/jens/automation2/receivers/DeviceOrientationListener.java +++ b/app/src/main/java/com/jens/automation2/receivers/DeviceOrientationListener.java @@ -34,17 +34,18 @@ public class DeviceOrientationListener implements SensorEventListener, Automatio static int sensorValueCounter = 0; // Gravity rotational data - private float gravity[]; + float gravity[]; // Magnetic rotational data - private float magnetic[]; //for magnetic rotational data - private float accels[] = new float[3]; - private float mags[] = new float[3]; - private float[] values = new float[3]; + float magnetic[]; //for magnetic rotational data + float accels[] = new float[3]; + float mags[] = new float[3]; + float[] values = new float[3]; + boolean hasMagneticSensor=false; // azimuth, pitch and roll - private float azimuth; - private float pitch; - private float roll; + float azimuth; + float pitch; + float roll; boolean applies = false; boolean flipped = false; @@ -91,7 +92,10 @@ public class DeviceOrientationListener implements SensorEventListener, Automatio isRunning = true; sManager.registerListener(this, sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); - sManager.registerListener(this, sManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_NORMAL); + hasMagneticSensor = sManager.registerListener(this, sManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_NORMAL); + + if(!hasMagneticSensor) + sManager.registerListener(this, sManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_NORMAL); } } @@ -129,6 +133,9 @@ public class DeviceOrientationListener implements SensorEventListener, Automatio break; } + if (!hasMagneticSensor) + mags=new float[]{1f,1f,1f}; + if (mags != null && accels != null) { gravity = new float[9];