From 6ad68d73e4f9c00af6cc030a168458acb7b69b50 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Tue, 30 Oct 2018 12:00:20 +0100 Subject: Android: Implement calibrationLevel for QCompassReading [ChangeLog][Platform Specific Changes][Android] QCompassReading::calibrationLevel now returns a valid value when possible. Change-Id: Ia7b6af9fc14d4edc4ce04af251eb29c84f08b957 Reviewed-by: Alex Blasche Reviewed-by: Lorn Potter --- src/plugins/sensors/android/src/androidcompass.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/plugins/sensors/android/src/androidcompass.cpp b/src/plugins/sensors/android/src/androidcompass.cpp index 610dcde7..0911d901 100644 --- a/src/plugins/sensors/android/src/androidcompass.cpp +++ b/src/plugins/sensors/android/src/androidcompass.cpp @@ -49,7 +49,7 @@ class AndroidAccelerometerListener : public AndroidSensors::AndroidSensorsListen public: AndroidAccelerometerListener(AndroidCompass *parent) - : m_compass(parent) + : accuracy(0), m_compass(parent) { memset(reading, 0, sizeof(reading)); } @@ -64,9 +64,9 @@ public: AndroidSensors::unregisterListener(AndroidSensors::TYPE_ACCELEROMETER, this); } - void onAccuracyChanged(jint accuracy) override + void onAccuracyChanged(jint value) override { - Q_UNUSED(accuracy); + accuracy = value; } void onSensorChanged(jlong /*timestamp*/, const jfloat *values, uint size) override @@ -80,6 +80,7 @@ public: } jfloat reading[3]; + jint accuracy; private: AndroidCompass *m_compass; @@ -89,7 +90,7 @@ class AndroidMagnetometerListener : public AndroidSensors::AndroidSensorsListene { public: AndroidMagnetometerListener(AndroidCompass *parent) - :m_compass(parent) + : accuracy(0), m_compass(parent) { memset(reading, 0, sizeof(reading)); } @@ -104,9 +105,9 @@ public: AndroidSensors::unregisterListener(AndroidSensors::TYPE_MAGNETIC_FIELD, this); } - void onAccuracyChanged(jint accuracy) override + void onAccuracyChanged(jint value) override { - Q_UNUSED(accuracy); + accuracy = value; } void onSensorChanged(jlong /*timestamp*/, const jfloat *values, uint size) override @@ -120,6 +121,7 @@ public: } jfloat reading[3]; + jint accuracy; private: AndroidCompass *m_compass; }; @@ -169,5 +171,7 @@ void AndroidCompass::testStuff() qreal azimuth = AndroidSensors::getCompassAzimuth(m_accelerometerListener->reading, m_magnetometerListener->reading); m_reading.setAzimuth(qRadiansToDegrees(azimuth)); + const qreal accuracyValue = (m_accelerometerListener->accuracy + m_magnetometerListener->accuracy) / 6; + m_reading.setCalibrationLevel(accuracyValue); newReadingAvailable(); } -- cgit v1.2.3