summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@qt.io>2016-11-21 14:09:58 +0100
committerChristian Stromme <christian.stromme@qt.io>2016-11-22 11:26:19 +0000
commitc4f18f019ee3a72a752361c65904fa1a156e9eb7 (patch)
tree83669c05be90bb1eb0f62aba9ad205de0afd9a2f
parent5d1b3831b42163f5a46edc7d6f4865ce73281f28 (diff)
downloadqtsensors-c4f18f019ee3a72a752361c65904fa1a156e9eb7.tar.gz
Android: Fix incorrect accuracy levels
Android reports accuracy in four different levels (0, 1, 2 and 3), these values were used directly in Qt, so the reported values would be outside Qt documented range, which is a floating point number between 0 and 1. Task-number: QTBUG-57184 Change-Id: I912a76bffd3e205689103b0352ea4c480d660d63 Reviewed-by: Lorn Potter <lorn.potter@canonical.com>
-rw-r--r--src/plugins/sensors/android/src/androidmagnetometer.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/plugins/sensors/android/src/androidmagnetometer.cpp b/src/plugins/sensors/android/src/androidmagnetometer.cpp
index 76cc8f4..62f540e 100644
--- a/src/plugins/sensors/android/src/androidmagnetometer.cpp
+++ b/src/plugins/sensors/android/src/androidmagnetometer.cpp
@@ -33,13 +33,27 @@
#include "androidmagnetometer.h"
+enum AndroidSensorStatus
+{
+ SENSOR_STATUS_UNRELIABLE = 0,
+ SENSOR_STATUS_ACCURACY_LOW = 1,
+ SENSOR_STATUS_ACCURACY_MEDIUM = 2,
+ SENSOR_STATUS_ACCURACY_HIGH = 3,
+};
+
AndroidMagnetometer::AndroidMagnetometer(AndroidSensors::AndroidSensorType type, QSensor *sensor)
:AndroidCommonSensor<QMagnetometerReading>(type, sensor)
{}
void AndroidMagnetometer::onAccuracyChanged(jint accuracy)
{
- m_reader.setCalibrationLevel(accuracy);
+ // Expected range is [0, 3]
+ if (accuracy < SENSOR_STATUS_UNRELIABLE || accuracy > SENSOR_STATUS_ACCURACY_HIGH) {
+ qWarning("Unable to get sensor accuracy. Unexpected value: %d", accuracy);
+ return;
+ }
+
+ m_reader.setCalibrationLevel(accuracy / qreal(3.0));
}
void AndroidMagnetometer::onSensorChanged(jlong timestamp, const jfloat *values, uint size)