summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensors/android/src/androidaccelerometer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/sensors/android/src/androidaccelerometer.cpp')
-rw-r--r--src/plugins/sensors/android/src/androidaccelerometer.cpp38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/plugins/sensors/android/src/androidaccelerometer.cpp b/src/plugins/sensors/android/src/androidaccelerometer.cpp
index 36ce08e3..5a42d0cb 100644
--- a/src/plugins/sensors/android/src/androidaccelerometer.cpp
+++ b/src/plugins/sensors/android/src/androidaccelerometer.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2013 BogDan Vatra <bogdan@kde.org>
+** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtSensors module of the Qt Toolkit.
@@ -43,7 +44,13 @@
AndroidAccelerometer::AndroidAccelerometer(AndroidSensors::AndroidSensorType type, QSensor *sensor)
: AndroidCommonSensor<QAccelerometerReading>(type, sensor)
-{}
+{
+ QAccelerometer * const accelerometer = qobject_cast<QAccelerometer *>(sensor);
+ if (accelerometer) {
+ connect(accelerometer, SIGNAL(accelerationModeChanged(AccelerationMode)),
+ this, SLOT(applyAccelerationMode()));
+ }
+}
void AndroidAccelerometer::onSensorChanged(jlong timestamp, const jfloat *values, uint size)
{
@@ -61,3 +68,32 @@ void AndroidAccelerometer::onAccuracyChanged(jint accuracy)
{
Q_UNUSED(accuracy)
}
+
+void AndroidAccelerometer::applyAccelerationMode()
+{
+ const QAccelerometer * const accelerometer = qobject_cast<QAccelerometer *>(sensor());
+ if (accelerometer) {
+ stop(); //Stop previous sensor and start new one
+ m_type = modeToSensor(accelerometer->accelerationMode());
+ start();
+ }
+}
+AndroidSensors::AndroidSensorType AndroidAccelerometer::modeToSensor(QAccelerometer::AccelerationMode mode)
+{
+ AndroidSensors::AndroidSensorType type;
+
+ switch (mode) {
+ case QAccelerometer::Gravity:
+ type = AndroidSensors::TYPE_GRAVITY;
+ break;
+ case QAccelerometer::User:
+ type = AndroidSensors::TYPE_LINEAR_ACCELERATION;
+ break;
+ default:
+ case QAccelerometer::Combined:
+ type = AndroidSensors::TYPE_ACCELEROMETER;
+ break;
+ }
+
+ return type;
+}