From 3afb803c682e988718a7fffa8e1735df3586d40c Mon Sep 17 00:00:00 2001 From: "iwg..ic" Date: Mon, 1 Oct 2012 13:58:15 +0000 Subject: [PATCH] Added check for sensor data accuracy to ignore data when sensor accuracy is unreliable. Fixed error in log entry when sensor accuracy changes Added log entry on calibration of axis git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9789 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- .../input/android/AndroidSensorJoyInput.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/engine/src/android/com/jme3/input/android/AndroidSensorJoyInput.java b/engine/src/android/com/jme3/input/android/AndroidSensorJoyInput.java index 0b5c90a84..95ddb1587 100644 --- a/engine/src/android/com/jme3/input/android/AndroidSensorJoyInput.java +++ b/engine/src/android/com/jme3/input/android/AndroidSensorJoyInput.java @@ -121,6 +121,7 @@ public class AndroidSensorJoyInput implements JoyInput, SensorEventListener { int androidSensorType = -1; int androidSensorSpeed = SensorManager.SENSOR_DELAY_GAME; Sensor sensor = null; + int sensorAccuracy = 0; float[] lastValues; final Object valuesLock = new Object(); ArrayList axes = new ArrayList(); @@ -360,6 +361,10 @@ public class AndroidSensorJoyInput implements JoyInput, SensorEventListener { return false; } + if (sensorData.sensorAccuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) { + return false; + } + synchronized(sensorData.valuesLock) { accValues[0] = sensorData.lastValues[0]; accValues[1] = sensorData.lastValues[1]; @@ -371,6 +376,10 @@ public class AndroidSensorJoyInput implements JoyInput, SensorEventListener { return false; } + if (sensorData.sensorAccuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) { + return false; + } + synchronized(sensorData.valuesLock) { magValues[0] = sensorData.lastValues[0]; magValues[1] = sensorData.lastValues[1]; @@ -619,6 +628,9 @@ public class AndroidSensorJoyInput implements JoyInput, SensorEventListener { SensorData sensorData = sensors.get(sensorType); if (sensorData != null && sensorData.sensor.equals(se.sensor) && sensorData.enabled) { + if (sensorData.sensorAccuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) { + return; + } synchronized(sensorData.valuesLock) { for (int i=0; i