summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2018-10-30 12:00:20 +0100
committerAndy Shaw <andy.shaw@qt.io>2018-10-31 06:18:08 +0000
commit6ad68d73e4f9c00af6cc030a168458acb7b69b50 (patch)
treecbbf81f8c4d11d668ed171424e94e3da6a0afa6e
parent76f3abf8e03344a73e32d1324cd7e6751b4039de (diff)
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 <alexander.blasche@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
-rw-r--r--src/plugins/sensors/android/src/androidcompass.cpp16
1 files 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();
}