summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/src/images/sensorgesture-slam.pngbin0 -> 32058 bytes
-rw-r--r--doc/src/qtsensorgestures-plugins.qdoc5
-rw-r--r--src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp30
-rw-r--r--src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h1
-rw-r--r--src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp29
-rw-r--r--src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp7
6 files changed, 26 insertions, 46 deletions
diff --git a/doc/src/images/sensorgesture-slam.png b/doc/src/images/sensorgesture-slam.png
new file mode 100644
index 00000000..aa998bb7
--- /dev/null
+++ b/doc/src/images/sensorgesture-slam.png
Binary files differ
diff --git a/doc/src/qtsensorgestures-plugins.qdoc b/doc/src/qtsensorgestures-plugins.qdoc
index 6cbe7065..9e662c1a 100644
--- a/doc/src/qtsensorgestures-plugins.qdoc
+++ b/doc/src/qtsensorgestures-plugins.qdoc
@@ -103,6 +103,11 @@ For QtSensorGestures plugin:
\o Shake phone in a certain direction, using the Accelerometer sensor.
\o \image sensorgesture-shake.png
\row
+ \o QtSensors.slam
+ \o slam
+ \o Move phone quickly down and then back up, using the Accelerometer sensor.
+ \o \image sensorgesture-slam.png
+ \row
\o QtSensors.turnover
\o turnover
\o Phone is turned face down and placed on a surface, using Proximity and Orientation sensors.
diff --git a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
index 1a85e242..c0b8f4be 100644
--- a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
@@ -110,14 +110,16 @@ bool QPickupSensorGestureRecognizer::isActive()
return active;
}
+#define PICKUP_BOTTOM_THRESHOLD 15
+#define PICKUP_TOP_THRESHOLD 60
void QPickupSensorGestureRecognizer::accelChanged()
{
qreal x = accel->reading()->x();
- qreal xdiff = pXaxis - x;
qreal y = accel->reading()->y();
- qreal ydiff = pYaxis - y;
qreal z = accel->reading()->z();
+ qreal xdiff = pXaxis - x;
+ qreal ydiff = pYaxis - y;
qreal zdiff = pZaxis - z;
roll = calc(calcRoll(x, y, z));
@@ -125,16 +127,16 @@ void QPickupSensorGestureRecognizer::accelChanged()
if (xdiff < 0.7 && ydiff < .7 && zdiff < .7) {
atRest = true;
} else {
- if (atRest && roll > 15 ) {
-// roll = calc(calcRoll(x, y, z));
- atRest = false;
- okToSignal = true;
- }
+ atRest = false;
}
-
- if (atRest&&
- okToSignal && (roll < 60 && roll > 15)
- && (y > 5.0 && y < 8.9) && (z > 5.0 && z < 7.9)) {
+ if (roll > PICKUP_BOTTOM_THRESHOLD
+ && (fabs(lastRoll - roll) > PICKUP_BOTTOM_THRESHOLD)) {
+ okToSignal = true;
+ detectedRoll = roll;
+ }
+ if (atRest
+ && okToSignal
+ && (roll < PICKUP_TOP_THRESHOLD && roll > PICKUP_BOTTOM_THRESHOLD)) {
if (!timer->isActive()) {
timer->start();
}
@@ -155,15 +157,11 @@ void QPickupSensorGestureRecognizer::timeout()
qreal y = accel->reading()->y();
qreal z = accel->reading()->z();
- qreal thisroll = calc(calcRoll(x, y, z));
-
qreal pitch = calc(calcPitch(x, y, z));
- qreal difference = thisroll - roll;
-//qDebug() << Q_FUNC_INFO << thisroll << pitch;
if (atRest
&& (pitch > -6 && pitch < 6)
- && (roll < 60 && roll > 15)
+ && (roll < PICKUP_TOP_THRESHOLD && roll > PICKUP_BOTTOM_THRESHOLD)
&& (y > 5.0 && y < 8.9)
&& (z > 5.0 && z < 7.9)) {
Q_EMIT pickup();
diff --git a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h
index 65a3f322..3870fd03 100644
--- a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h
@@ -86,6 +86,7 @@ private:
qreal calc(qreal yrot);
qreal lastRoll;
+ qreal detectedRoll;
};
QT_END_NAMESPACE
diff --git a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
index 37708d95..f45bdcad 100644
--- a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
@@ -113,12 +113,10 @@ bool QSlamSensorGestureRecognizer::isActive()
return active;
}
-#define SLAM_FACTOR 5.0
+#define SLAM_FACTOR -20.0
void QSlamSensorGestureRecognizer::accelChanged()
{
- qreal x = accel->reading()->x();
- qreal y = accel->reading()->y();
qreal z = accel->reading()->z();
//// very hacky
@@ -127,17 +125,7 @@ void QSlamSensorGestureRecognizer::accelChanged()
if (currentOrientation == QOrientationReading::FaceUp) {
z = z - 9.8;
}
- if (currentOrientation == QOrientationReading::LeftUp
- || currentOrientation == QOrientationReading::RightUp) {
- x = x - 9.8;
- }
- if (currentOrientation == QOrientationReading::TopUp
- ||currentOrientation == QOrientationReading::TopDown ) {
- y = y - 9.8;
- }
- qreal diffX = lastX - x;
- qreal diffY = lastY - y;
qreal diffZ = lastZ - z;
if (detecting && slamMap.count() > 5 && slamMap.at(5) == true) {
@@ -147,26 +135,15 @@ void QSlamSensorGestureRecognizer::accelChanged()
if (slamMap.count() > 5)
slamMap.removeLast();
- if (fabs(x) > SLAM_FACTOR
- || fabs(y) > SLAM_FACTOR
- || fabs(z) > SLAM_FACTOR) {
-
+ if (z < SLAM_FACTOR) {
slamMap.insert(0,true);
-
-
- if (!detecting && !timer->isActive()
- && (fabs(diffX) < SLAM_FACTOR + 3
- ||fabs(diffY) < SLAM_FACTOR + 3
- ||fabs(diffZ) < SLAM_FACTOR + 3)) {
+ if (!detecting && !timer->isActive()) {
timer->start();
detecting = true;
}
} else {
slamMap.insert(0,false);
}
-
- lastX = x;
- lastY = y;
lastZ = z;
}
diff --git a/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp
index 4869f7e4..3ed4b900 100644
--- a/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp
@@ -60,7 +60,8 @@ inline qreal calcYaw(double Ax, double Ay, double Az)
}
QWhipSensorGestureRecognizer::QWhipSensorGestureRecognizer(QObject *parent) :
- QSensorGestureRecognizer(parent), whipIt(0), lastX(0)
+ QSensorGestureRecognizer(parent), whipIt(0), lastX(0),
+ detectedX(0)
{
}
@@ -137,8 +138,7 @@ void QWhipSensorGestureRecognizer::accelChanged()
if (whipIt) {
if (((!wasNegative && difference > accelRange * WHIP_THRESHOLD_FACTOR)
|| (wasNegative && difference < -accelRange * WHIP_THRESHOLD_FACTOR))
- && abs(degreesZ) < WHIP_DEGREES
- && abs(detectedX) < abs(x)) {
+ && abs(degreesZ) < WHIP_DEGREES) {
Q_EMIT whip();
Q_EMIT detected("whip");
whipIt = false;
@@ -148,7 +148,6 @@ void QWhipSensorGestureRecognizer::accelChanged()
|| (difference < 0 && difference > -accelRange * WHIP_DETECTION_FACTOR))
&& abs(degreesZ) < WHIP_DEGREES
&& orientation->reading()->orientation() != QOrientationReading::FaceUp) {
-
detectedX = x;
// start of gesture
timer->start();