summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@nokia.com>2012-03-08 08:09:32 +1000
committerQt by Nokia <qt-info@nokia.com>2012-03-08 02:02:32 +0100
commit22b8a1ca8ebb2d862fb99d061342a1190b747fec (patch)
treeed05754b4e2bfbb4b1f4c6689fe8ad19cea8a2c4 /src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
parentfb9638d88f55107e5e8d7eb3bbc30bc99890feb9 (diff)
fix some issues and make whip easier
Change-Id: I14f84219e07bcede9badc4f02566f38533084009 Reviewed-by: Lincoln Ramsay <lincoln.ramsay@nokia.com>
Diffstat (limited to 'src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp')
-rw-r--r--src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp34
1 files changed, 28 insertions, 6 deletions
diff --git a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
index dd7bcd93..b63c833f 100644
--- a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
@@ -131,7 +131,19 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
qreal y = reading->y();
qreal z = reading->z();
-//// very hacky
+ if (zList.count() > 4)
+ zList.removeLast();
+
+ qreal averageZ = 0;
+ Q_FOREACH (qreal az, zList) {
+ averageZ += az;
+ }
+ averageZ += z;
+ averageZ /= zList.count() + 1;
+
+ zList.insert(0,qAbs(averageZ));
+
+ //// very hacky
if (orientationReading == 0)
return;
if (orientationReading->orientation() == QOrientationReading::FaceUp) {
@@ -148,8 +160,8 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
if (slamMap.count() > 5)
slamMap.removeLast();
if (z < SLAM_FACTOR
- && qAbs(diffX) < (accelRange *SLAM_WIGGLE_FACTOR)
- && qAbs(diffY) < (accelRange *SLAM_WIGGLE_FACTOR)) {
+ && qAbs(diffX) < (accelRange * SLAM_WIGGLE_FACTOR)
+ && qAbs(diffY) < (accelRange * SLAM_WIGGLE_FACTOR)) {
slamMap.insert(0,true);
if (!detecting && !timer->isActive()) {
timer->start();
@@ -164,9 +176,9 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
negativeList.removeLast();
if ((((x < 0 && lastX > 0) || (x > 0 && lastX < 0))
- && qAbs(diffX) > (accelRange * 0.5))
- || ((y < 0 && lastY > 0) || (y > 0 && lastY < 0))
- && qAbs(diffY) > (accelRange * 0.5)) {
+ && qAbs(diffX) > (accelRange * 0.7))
+ || (((y < 0 && lastY > 0) || (y > 0 && lastY < 0))
+ && qAbs(diffY) > (accelRange * 0.7))) {
negativeList.insert(0,true);
} else {
negativeList.insert(0,false);
@@ -186,6 +198,15 @@ void QSlamSensorGestureRecognizer:: checkForSlam()
{
slamOk = false;
+ qreal averageZ = 0;
+ Q_FOREACH (qreal az, zList) {
+ averageZ += az;
+ }
+ averageZ /= zList.count();
+
+ if (qAbs(averageZ) < 6.0)
+ return;
+
for (int i = 0; i < slamMap.count() - 1; i++) {
if (!slamMap.at(i)) {
slamOk = true;
@@ -204,6 +225,7 @@ void QSlamSensorGestureRecognizer:: checkForSlam()
ok = false;
}
}
+
if (ok) {
Q_EMIT slam();
Q_EMIT detected("slam");