diff options
author | Paul Olav Tvete <paul.tvete@digia.com> | 2014-08-08 18:31:20 +0200 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@digia.com> | 2014-08-12 09:24:51 +0200 |
commit | ea7af7f00886f77941b81262e597c3b7f3477f48 (patch) | |
tree | 535e61590542e9f6e464b93de16202ce239b7e3b /src/plugins/sensors/android/src/main.cpp | |
parent | 825ae95d8984a3daa49ad81a91e85483918799af (diff) |
Compass sensor implementation for Android
Change-Id: Ic13d2d1e400a92b2f0c3c83e279c58b799f9d06b
Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
Diffstat (limited to 'src/plugins/sensors/android/src/main.cpp')
-rw-r--r-- | src/plugins/sensors/android/src/main.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/plugins/sensors/android/src/main.cpp b/src/plugins/sensors/android/src/main.cpp index 3d8604fe..b8d14960 100644 --- a/src/plugins/sensors/android/src/main.cpp +++ b/src/plugins/sensors/android/src/main.cpp @@ -44,7 +44,9 @@ #include <qsensorbackend.h> #include <qsensormanager.h> #include <qaccelerometer.h> +#include <qcompass.h> #include "androidaccelerometer.h" +#include "androidcompass.h" #include "androidgyroscope.h" #include "androidlight.h" #include "androidmagnetometer.h" @@ -63,10 +65,13 @@ class AndroidSensorPlugin : public QObject, public QSensorPluginInterface, publi public: void registerSensors() { + bool accelerometer = false; + bool magnetometer = false; foreach (AndroidSensorType sensor, availableSensors()) { switch (sensor) { case TYPE_ACCELEROMETER: QSensorManager::registerBackend(QAccelerometer::type, QByteArray::number(sensor), this); + accelerometer = true; break; case TYPE_AMBIENT_TEMPERATURE: case TYPE_TEMPERATURE: @@ -84,6 +89,7 @@ public: break; // add the linear acceleration sensor backend case TYPE_MAGNETIC_FIELD: QSensorManager::registerBackend(QMagnetometer::type, QByteArray::number(sensor), this); + magnetometer = true; break; case TYPE_ORIENTATION: break; // add the orientation sensor backend @@ -106,10 +112,15 @@ public: break; // add backends for API level 18 sensors } } + if (accelerometer && magnetometer) + QSensorManager::registerBackend(QCompass::type, AndroidCompass::id, this); } QSensorBackend *createBackend(QSensor *sensor) { + if (sensor->identifier() == AndroidCompass::id) + return new AndroidCompass(sensor); + AndroidSensorType type = static_cast<AndroidSensorType>(sensor->identifier().toInt()); switch (type) { case TYPE_ACCELEROMETER: { |