diff options
author | Lorn Potter <lorn.potter@nokia.com> | 2012-05-16 10:45:30 +1000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-14 04:18:47 +0100 |
commit | 5e2502dc7c8ab86c023b8cddb840b1728169a13d (patch) | |
tree | 83bf0d2b42accc4f5dd68fde590a6708196b9206 | |
parent | ce33c04b01fcd368c506335c2f105efbe9f4f702 (diff) | |
download | qtsensors-5e2502dc7c8ab86c023b8cddb840b1728169a13d.tar.gz |
remove the need to use QTimer and use timestamps instead.
Change-Id: I6327357de9f84df3db86d714747210fe62547818
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
18 files changed, 619 insertions, 129 deletions
diff --git a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp index 63d56fa..13923f8 100644 --- a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp +++ b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp @@ -43,12 +43,15 @@ #include "qhoversensorgesturerecognizer.h" #include <math.h> +#define TIMER2_TIMEOUT 5000 + QT_BEGIN_NAMESPACE QHoverSensorGestureRecognizer::QHoverSensorGestureRecognizer(QObject *parent) : QSensorGestureRecognizer(parent), - orientationReading(0), - hoverOk(0), detecting(0), active(0), initialReflectance(0), useHack(0) + orientationReading(0),reflectance(0), + hoverOk(0), detecting(0), active(0), initialReflectance(0), useHack(0), + lastTimestamp(0), timer2Active(0), lapsedTime2(0) { } @@ -58,10 +61,7 @@ QHoverSensorGestureRecognizer::~QHoverSensorGestureRecognizer() void QHoverSensorGestureRecognizer::create() { - timer2 = new QTimer(this); - connect(timer2,SIGNAL(timeout()),this,SLOT(timeout2())); - timer2->setSingleShot(true); - timer2->setInterval(3000); + } QString QHoverSensorGestureRecognizer::id() const @@ -90,6 +90,8 @@ bool QHoverSensorGestureRecognizer::start() detectedHigh = 0; initialReflectance = 0; useHack = false; + timer2Active = false; + lapsedTime2 = 0; return active; } @@ -102,6 +104,8 @@ bool QHoverSensorGestureRecognizer::stop() disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(orientationReadingChanged(QOrientationReading *)), this,SLOT(orientationReadingChanged(QOrientationReading *))); active = false; + timer2Active = false; + initialReflectance = 0; return active; } @@ -144,7 +148,6 @@ void QHoverSensorGestureRecognizer::irProximityReadingChanged(QIRProximityReadin detectedHigh = 0; } - qreal detectedPercent = 100 - (detectedHigh / reflectance * 100); qint16 percentCheck; @@ -153,9 +156,13 @@ void QHoverSensorGestureRecognizer::irProximityReadingChanged(QIRProximityReadin else percentCheck = -101; + quint64 timestamp = reading->timestamp(); + if (!detecting && checkForHovering()) { detecting = true; + detecting = true; + timer2Active = true; detectedHigh = reflectance; } else if (detecting && detectedPercent < percentCheck @@ -166,11 +173,19 @@ void QHoverSensorGestureRecognizer::irProximityReadingChanged(QIRProximityReadin hoverOk = false; detecting = false; detectedHigh = 0; - timer2->stop(); + timer2Active = false;; } if (detecting && reflectance < 0.2) { timeout(); } + if (timer2Active && lastTimestamp > 0) + lapsedTime2 += (timestamp - lastTimestamp )/1000; + + if (timer2Active && lapsedTime2 >= TIMER2_TIMEOUT) { + timeout2(); + } + + lastTimestamp = reading->timestamp(); } bool QHoverSensorGestureRecognizer::checkForHovering() @@ -192,7 +207,7 @@ void QHoverSensorGestureRecognizer::timeout() { if (checkForHovering()) { hoverOk = true; - timer2->start(); + timer2Active = true; } else { detecting = false; detectedHigh = 0; diff --git a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h index 1fb0349..cb9d81a 100644 --- a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h +++ b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h @@ -44,7 +44,6 @@ #define QHOVERSENSORGESTURERECOGNIZER_H #include <QSensorGestureRecognizer> -#include <QTimer> #include "qtsensorgesturesensorhandler.h" @@ -75,8 +74,6 @@ private slots: private: QOrientationReading *orientationReading; qreal reflectance; - - QTimer *timer2; bool hoverOk; bool detecting; @@ -86,6 +83,11 @@ private: bool checkForHovering(); bool useHack; + quint64 lastTimestamp; + + bool timer2Active; + quint64 lapsedTime2; + }; QT_END_NAMESPACE #endif // QHOVERSENSORGESTURERECOGNIZER_H diff --git a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp index 55724dc..3fd0b2a 100644 --- a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp +++ b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp @@ -44,14 +44,17 @@ #include <QtCore/qmath.h> #define RADIANS_TO_DEGREES 57.2957795 +#define TIMER_TIMEOUT 250 QT_BEGIN_NAMESPACE QPickupSensorGestureRecognizer::QPickupSensorGestureRecognizer(QObject *parent) : QSensorGestureRecognizer(parent) + , accelReading(0) , active(0) - , atRest(1) - , okToSignal(1) + , pXaxis(0) + , pYaxis(0) + , pZaxis(0) , lastpitch(0) , detecting(0) { @@ -63,12 +66,6 @@ QPickupSensorGestureRecognizer::~QPickupSensorGestureRecognizer() void QPickupSensorGestureRecognizer::create() { - timer = new QTimer(this); - - connect(timer,SIGNAL(timeout()),this,SLOT(timeout())); - timer->setSingleShot(true); - timer->setInterval(750); - } QString QPickupSensorGestureRecognizer::id() const @@ -79,12 +76,15 @@ QString QPickupSensorGestureRecognizer::id() const bool QPickupSensorGestureRecognizer::start() { if (QtSensorGestureSensorHandler::instance()->startSensor(QtSensorGestureSensorHandler::Accel)) { - active = true; - connect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)), - this,SLOT(accelChanged(QAccelerometerReading *))); - } else { - active = false; - } + active = true; + connect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)), + this,SLOT(accelChanged(QAccelerometerReading *))); + } else { + QtSensorGestureSensorHandler::instance()->stopSensor(QtSensorGestureSensorHandler::Accel); + active = false; + } + clear(); + return active; } @@ -95,7 +95,6 @@ bool QPickupSensorGestureRecognizer::stop() disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading*)), this,SLOT(accelChanged(QAccelerometerReading *))); active = false; - timer->stop(); return active; } @@ -105,102 +104,113 @@ bool QPickupSensorGestureRecognizer::isActive() return active; } -#define PICKUP_BOTTOM_THRESHOLD 20 -#define PICKUP_TOP_THRESHOLD 87 +#define PICKUP_BOTTOM_THRESHOLD 25 +#define PICKUP_TOP_THRESHOLD 80 +#define PICKUP_ANGLE_THRESHOLD 25 +#define PICKUP_ROLL_THRESHOLD 13 void QPickupSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) { accelReading = reading; const qreal x = reading->x(); - const qreal xdiff = pXaxis - x; const qreal y = reading->y(); - const qreal ydiff = pYaxis - y; const qreal z = reading->z(); + const qreal xdiff = pXaxis - x; + const qreal ydiff = pYaxis - y; const qreal zdiff = pZaxis - z; - pitch = qAtan(y / qSqrt(x*x + z*z)) * RADIANS_TO_DEGREES; + qreal pitch = qAtan(y / qSqrt(x*x + z*z)) * RADIANS_TO_DEGREES; + qreal roll = qAtan(x / qSqrt(y*y + z*z)) * RADIANS_TO_DEGREES; - if (zList.count() > 5) - zList.removeLast(); + if ((qAbs(xdiff) < 0.7 && qAbs(ydiff) < .7 && qAbs(zdiff) < .7) + || z < 0) { + detecting = false; + } else if (pitch > PICKUP_BOTTOM_THRESHOLD && pitch < PICKUP_TOP_THRESHOLD) { + detecting = true; + } - if (qAbs(xdiff) < 0.7 && qAbs(ydiff) < .7 && qAbs(zdiff) < .7) { - atRest = true; - } else { - atRest = false; + if ( pitchList.count() > 21) { + pitchList.removeFirst(); + } + if ( rollList.count() > 21) { + rollList.removeFirst(); } - if (detectingNegativeList.count() > 5) - detectingNegativeList.removeLast(); - - if (!detecting) { - zList.insert(0,z); + if (pitch > 1) { + pitchList.append(pitch); } - if (detecting && z < 0) { - okToSignal = false; - detecting = false; - detectingNegativeList.insert(0,true); - atRest = true; + if (roll > 1) { + rollList.append(roll); } - if (!atRest && !detecting && (lastpitch - pitch < -PICKUP_BOTTOM_THRESHOLD)) { - detecting = true; - if (!timer->isActive()) { - timer->start(); - } - detectedPitchDifference = lastpitch - pitch; - lastpitch = pitch; - okToSignal = true; + if (detecting && pitchList.count() > 5 ) { + timeout(); } + lastpitch = pitch; pXaxis = x; pYaxis = y; pZaxis = z; - if (atRest && !detecting) - lastpitch = pitch; } void QPickupSensorGestureRecognizer::timeout() { - const qreal x = accelReading->x(); - const qreal y = accelReading->y(); - const qreal z = accelReading->z(); - - const qreal roll = qAtan(x / qSqrt(y*y + z*z)) * RADIANS_TO_DEGREES; + qreal averageRoll = 0; + for (int r = 0; r < rollList.count(); r++) { + averageRoll += rollList.at(r); + } + averageRoll /= rollList.count(); - bool ok = true; - for (int i = 0; i < zList.count() - 1; i++) { - if (zList.at(i) < 0) { - ok = false; - } + if (averageRoll > PICKUP_ROLL_THRESHOLD) { + clear(); + return; + } + if (pitchList.isEmpty() + || pitchList.at(0) > PICKUP_BOTTOM_THRESHOLD) { + clear(); + return; } - if (ok) { - for (int i = 0; i < detectingNegativeList.count() - 1; i++) { - if (detectingNegativeList.at(i) == true) { - ok = false; + qreal previousPitch = 0; + qreal startPitch = -1.0; + int goodCount = 0; + + qreal averagePitch = 0; + for (int i = 0; i < pitchList.count(); i++) { + averagePitch += pitchList.at(i); + if (previousPitch < pitchList.at(i) + && qAbs(pitchList.at(i)) - qAbs(previousPitch) < 20) { + if (goodCount == 1 && previousPitch != 0) { + startPitch = previousPitch; } + goodCount++; } + + previousPitch = pitchList.at(i); + } + averagePitch /= pitchList.count(); + + if (averagePitch < 5) { + clear(); + return; } - if (ok && detecting - && okToSignal - && qAbs(roll) < 10 - && (pitch < PICKUP_TOP_THRESHOLD - && pitch > PICKUP_BOTTOM_THRESHOLD) - && (y > 4.0 && y < 10) - && (z > 4.0 && z < 10)) { + if (goodCount >= 3 && + (pitchList.last() < PICKUP_TOP_THRESHOLD + && pitchList.last() > PICKUP_BOTTOM_THRESHOLD) + && startPitch > 0 + && (pitchList.last() - startPitch) > PICKUP_ANGLE_THRESHOLD) { Q_EMIT pickup(); Q_EMIT detected("pickup"); } clear(); } - void QPickupSensorGestureRecognizer::clear() { - okToSignal = false; + pitchList.clear(); detecting = false; - detectingNegativeList.clear(); } + QT_END_NAMESPACE diff --git a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h index d7156c5..2fd249f 100644 --- a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h +++ b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h @@ -44,8 +44,6 @@ #define QPICKUPSENSORGESTURERECOGNIZER_H #include <qsensorgesturerecognizer.h> -#include <QTimer> - #include "qtsensorgesturesensorhandler.h" QT_BEGIN_NAMESPACE @@ -69,26 +67,21 @@ Q_SIGNALS: private slots: void accelChanged(QAccelerometerReading *reading); + void timeout(); private: QAccelerometerReading *accelReading; - QTimer *timer; bool active; - bool atRest; - bool okToSignal; - qreal pXaxis; qreal pYaxis; qreal pZaxis; - qreal pitch; qreal lastpitch; - qreal detectedPitchDifference; bool detecting; - QList <bool> detectingNegativeList; - QList <qreal> zList; + QList <qreal> pitchList; + QList <qreal> rollList; void clear(); }; diff --git a/src/plugins/sensorgestures/qtsensors/qshake2recognizer.cpp b/src/plugins/sensorgestures/qtsensors/qshake2recognizer.cpp index cab6f45..98f381f 100644 --- a/src/plugins/sensorgestures/qtsensors/qshake2recognizer.cpp +++ b/src/plugins/sensorgestures/qtsensors/qshake2recognizer.cpp @@ -40,7 +40,6 @@ ****************************************************************************/ #include <QDebug> -#include <QTimer> #include "qshake2recognizer.h" #include <math.h> @@ -54,6 +53,9 @@ QShake2SensorGestureRecognizer::QShake2SensorGestureRecognizer(QObject *parent) , shakeDirection(QShake2SensorGestureRecognizer::ShakeUndefined) , shaking(0) , shakeCount(0) + , lapsedTime(0) + , lastTimestamp(0), + timerActive(0) { timerTimeout = 250; } @@ -64,15 +66,10 @@ QShake2SensorGestureRecognizer::~QShake2SensorGestureRecognizer() void QShake2SensorGestureRecognizer::create() { - timer = new QTimer(this); - connect(timer,SIGNAL(timeout()),this,SLOT(timeout())); - timer->setSingleShot(true); - timer->setInterval(timerTimeout); } bool QShake2SensorGestureRecognizer::start() { - if (QtSensorGestureSensorHandler::instance()->startSensor(QtSensorGestureSensorHandler::Accel)) { active = true; connect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)), @@ -86,6 +83,7 @@ bool QShake2SensorGestureRecognizer::start() shakeCount = 0; shaking = false; shakeDirection = QShake2SensorGestureRecognizer::ShakeUndefined; + return active; } @@ -95,7 +93,6 @@ bool QShake2SensorGestureRecognizer::stop() disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)), this,SLOT(accelChanged(QAccelerometerReading *))); active = false; - timer->stop(); return active; } @@ -118,6 +115,8 @@ void QShake2SensorGestureRecognizer::accelChanged(QAccelerometerReading *reading const qreal y = reading->y(); const qreal z = reading->z(); + const quint64 timestamp = reading->timestamp(); + currentData.x = x; currentData.y = y; currentData.z = z; @@ -132,13 +131,15 @@ void QShake2SensorGestureRecognizer::accelChanged(QAccelerometerReading *reading return; } - bool wasShake = checkForShake(prevData, currentData, THRESHOLD); + bool wasShake; + wasShake = checkForShake(prevData, currentData, THRESHOLD); if (!shaking && wasShake && shakeCount == NUMBER_SHAKES) { shaking = true; shakeCount = 0; - + lapsedTime = 0; + timerActive = false; switch (shakeDirection) { case QShake2SensorGestureRecognizer::ShakeLeft: Q_EMIT shakeLeft(); @@ -159,6 +160,7 @@ void QShake2SensorGestureRecognizer::accelChanged(QAccelerometerReading *reading default: break; }; + } else if (wasShake) { if (shakeCount == 0 && shakeDirection == QShake2SensorGestureRecognizer::ShakeUndefined) { @@ -167,7 +169,6 @@ void QShake2SensorGestureRecognizer::accelChanged(QAccelerometerReading *reading const int ydiff = prevData.x - currentData.y; const int max = qMax(qAbs(ydiff), qAbs(xdiff)); - if (max == qAbs(xdiff)) { if (isNegative(xdiff)) shakeDirection = QShake2SensorGestureRecognizer::ShakeLeft; @@ -182,14 +183,21 @@ void QShake2SensorGestureRecognizer::accelChanged(QAccelerometerReading *reading } } shakeCount++; - if (shakeCount == 3) { - timer->start(); + if (shakeCount == NUMBER_SHAKES) { + timerActive = true; } } + if (timerActive && lastTimestamp > 0) + lapsedTime += (timestamp - lastTimestamp )/1000; + + if (timerActive && lapsedTime >= timerTimeout) { + timeout(); + } prevData.x = currentData.x; prevData.y = currentData.y; prevData.z = currentData.z; + lastTimestamp = timestamp; } void QShake2SensorGestureRecognizer::timeout() @@ -197,6 +205,9 @@ void QShake2SensorGestureRecognizer::timeout() shakeCount = 0; shaking = false; shakeDirection = QShake2SensorGestureRecognizer::ShakeUndefined; + timerActive = false; + lapsedTime = 0; + lastTimestamp = 0; } bool QShake2SensorGestureRecognizer::checkForShake(ShakeData prevSensorData, ShakeData currentSensorData, qreal threshold) diff --git a/src/plugins/sensorgestures/qtsensors/qshake2recognizer.h b/src/plugins/sensorgestures/qtsensors/qshake2recognizer.h index d2348ee..232d2ad 100644 --- a/src/plugins/sensorgestures/qtsensors/qshake2recognizer.h +++ b/src/plugins/sensorgestures/qtsensors/qshake2recognizer.h @@ -43,7 +43,6 @@ #define QSHAKERECOGNIZER_H #include <QDebug> -#include <QTimer> #include <qsensorgesturerecognizer.h> @@ -81,7 +80,6 @@ public: bool stop(); bool isActive(); - QTimer *timer; int timerTimeout; @@ -112,6 +110,9 @@ private: int threshold; bool isNegative(qreal num); + qreal lapsedTime; + quint64 lastTimestamp; + bool timerActive; }; QT_END_NAMESPACE #endif // QSHAKERECOGNIZER_H diff --git a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp index 8c9fa91..a6e8339 100644 --- a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp +++ b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp @@ -58,7 +58,10 @@ QSlamSensorGestureRecognizer::QSlamSensorGestureRecognizer(QObject *parent) : detecting(0), accelX(0), roll(0), - resting(0) + resting(0), + lastTimestamp(0), + lapsedTime(0), + timerActive(0) { } @@ -132,7 +135,7 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) const qreal x = reading->x(); const qreal y = reading->y(); const qreal z = reading->z(); - + quint64 timestamp = reading->timestamp(); if (qAbs(lastX - x) < SLAM_RESTING_FACTOR && qAbs(lastY - y) < SLAM_RESTING_FACTOR @@ -146,6 +149,15 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) restingList.removeLast(); restingList.insert(0, resting); + + if (timerActive && lastTimestamp > 0) + lapsedTime += (timestamp - lastTimestamp )/1000; + + if (timerActive && lapsedTime >= 250) { + doSlam(); + } + lastTimestamp = timestamp; + if (orientationReading == 0) { return; } @@ -167,7 +179,7 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) } if (detecting && qAbs(difference) > (accelRange * SLAM_DETECTION_FACTOR)) { - QTimer::singleShot(225,this,SLOT(doSlam())); + timerActive = true; } if (detecting && (qAbs(difference) < SLAM_ZERO_FACTOR && qAbs(difference) > 0)) { @@ -197,6 +209,8 @@ void QSlamSensorGestureRecognizer::doSlam() restingList.clear(); detecting = false; } + timerActive = false; + lapsedTime = 0; } QT_END_NAMESPACE diff --git a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.h index 7798292..4945033 100644 --- a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.h +++ b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.h @@ -92,6 +92,9 @@ private: bool resting; bool hasBeenResting(); + quint64 lastTimestamp; + quint64 lapsedTime; + bool timerActive; }; QT_END_NAMESPACE diff --git a/src/plugins/sensorgestures/qtsensors/qtsensorgesturesensorhandler.cpp b/src/plugins/sensorgestures/qtsensors/qtsensorgesturesensorhandler.cpp index bba2691..31a3f78 100644 --- a/src/plugins/sensorgestures/qtsensors/qtsensorgesturesensorhandler.cpp +++ b/src/plugins/sensorgestures/qtsensors/qtsensorgesturesensorhandler.cpp @@ -92,7 +92,7 @@ bool QtSensorGestureSensorHandler::startSensor(SensorGestureSensors sensor) if (accel == 0x0) { accel = new QAccelerometer(this); ok = accel->connectToBackend(); - accel->setDataRate(50); + accel->setDataRate(100); qoutputrangelist outputranges = accel->outputRanges(); if (outputranges.count() > 0) @@ -129,6 +129,7 @@ bool QtSensorGestureSensorHandler::startSensor(SensorGestureSensors sensor) //irproximity if (irProx == 0x0) { irProx = new QIRProximitySensor(this); + irProx->setDataRate(50); ok = irProx->connectToBackend(); connect(irProx,SIGNAL(readingChanged()),this,SLOT(irProximityChanged())); } diff --git a/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.cpp index 6805dca..8e30d3e 100644 --- a/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.cpp +++ b/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.cpp @@ -111,7 +111,8 @@ QString QTurnoverSensorGestureRecognizer::id() const void QTurnoverSensorGestureRecognizer::proximityChanged(QProximityReading *reading) { isClose = reading->close(); - isRecognized(); + if (isClose) + isRecognized(); } void QTurnoverSensorGestureRecognizer::orientationReadingChanged(QOrientationReading *reading) diff --git a/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.h index 4dc6e44..3319ac5 100644 --- a/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.h +++ b/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.h @@ -65,6 +65,7 @@ Q_SIGNALS: private slots: void orientationReadingChanged(QOrientationReading *reading); void proximityChanged(QProximityReading *reading); + void isRecognized(); private: @@ -72,7 +73,6 @@ private: bool isFaceDown; bool active; - void isRecognized(); QList<qreal> zList; }; diff --git a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp index 6d2f73e..db0e900 100644 --- a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp +++ b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp @@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE #define RADIANS_TO_DEGREES 57.2957795 - +#define TIMER_TIMEOUT 750 QTwistSensorGestureRecognizer::QTwistSensorGestureRecognizer(QObject *parent) : QSensorGestureRecognizer(parent) , orientationReading(0) @@ -92,6 +92,7 @@ bool QTwistSensorGestureRecognizer::start() active = false; } + return active; } @@ -144,7 +145,6 @@ bool QTwistSensorGestureRecognizer::checkOrientation() return true; } - void QTwistSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) { if (orientationReading == 0) diff --git a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.h index 94c2a96..a4b9ceb 100644 --- a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.h +++ b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.h @@ -92,9 +92,7 @@ private: int decreaseCount; qreal lastAngle; QList <QOrientationReading::Orientation> orientationList; - qreal detectedAngle; - }; QT_END_NAMESPACE #endif // QWFLICKSENSORGESTURERECOGNIZER_H diff --git a/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp index 88af230..d07a2ea 100644 --- a/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp +++ b/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp @@ -45,6 +45,8 @@ #include <QtCore/qmath.h> +#define TIMER_TIMEOUT 850 + QT_BEGIN_NAMESPACE QWhipSensorGestureRecognizer::QWhipSensorGestureRecognizer(QObject *parent) @@ -56,7 +58,11 @@ QWhipSensorGestureRecognizer::QWhipSensorGestureRecognizer(QObject *parent) lastY(0), lastZ(0), detecting(0), - whipOk(0){ + whipOk(0) + , lastTimestamp(0) + , timerActive(0) + , lapsedTime(0) +{ } QWhipSensorGestureRecognizer::~QWhipSensorGestureRecognizer() @@ -65,10 +71,6 @@ QWhipSensorGestureRecognizer::~QWhipSensorGestureRecognizer() void QWhipSensorGestureRecognizer::create() { - timer = new QTimer(this); - connect(timer,SIGNAL(timeout()),this,SLOT(timeout())); - timer->setSingleShot(true); - timer->setInterval(850); } QString QWhipSensorGestureRecognizer::id() const @@ -94,6 +96,9 @@ bool QWhipSensorGestureRecognizer::start() } else { active = false; } + lastTimestamp = 0; + timerActive = false; + lapsedTime = 0; return active; } @@ -107,8 +112,6 @@ bool QWhipSensorGestureRecognizer::stop() disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)), this,SLOT(accelChanged(QAccelerometerReading *))); active = false; - timer->stop(); - return active; } @@ -131,6 +134,8 @@ void QWhipSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) const qreal y = reading->y(); qreal z = reading->z(); + quint64 timestamp = reading->timestamp(); + if (zList.count() > 4) zList.removeLast(); @@ -163,14 +168,13 @@ void QWhipSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) if (negativeList.count() > 5) negativeList.removeLast(); - if (z < WHIP_FACTOR && qAbs(diffX) > -(accelRange * .1285)//-5.0115 && qAbs(lastX) < 7 && qAbs(x) < 7) { whipMap.insert(0,true); - if (!detecting && !timer->isActive()) { - timer->start(); + if (!detecting && !timerActive) { + timerActive = true; detecting = true; } } else { @@ -190,6 +194,13 @@ void QWhipSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading) lastX = x; lastY = y; lastZ = z; + + if (timerActive && lastTimestamp > 0) + lapsedTime += (timestamp - lastTimestamp )/1000; + + if (timerActive && lapsedTime >= TIMER_TIMEOUT) { + timeout(); + } } void QWhipSensorGestureRecognizer::timeout() @@ -211,6 +222,7 @@ void QWhipSensorGestureRecognizer::checkForWhip() whipOk = true; else return; + if (whipOk) { bool ok = true; for (int i = 0; i < negativeList.count() - 1; i++) { @@ -224,7 +236,7 @@ void QWhipSensorGestureRecognizer::checkForWhip() } detecting = false; whipMap.clear(); - timer->stop(); + timerActive = false; } } diff --git a/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.h index ba7b84c..e3ad7a0 100644 --- a/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.h +++ b/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.h @@ -73,7 +73,6 @@ private slots: private: QOrientationReading *orientationReading; - QTimer *timer; qreal accelRange; bool active; @@ -91,6 +90,12 @@ private: QList <bool> negativeList; QList<qreal> zList; + + quint64 lastTimestamp; + + bool timerActive; + quint64 lapsedTime; + }; QT_END_NAMESPACE diff --git a/tests/auto/qsensorgestures_gestures/mock_data/sensordata_notpickup.dat b/tests/auto/qsensorgestures_gestures/mock_data/sensordata_notpickup.dat new file mode 100644 index 0000000..ecaf670 --- /dev/null +++ b/tests/auto/qsensorgestures_gestures/mock_data/sensordata_notpickup.dat @@ -0,0 +1,400 @@ +orientation:402980682,5 +accelerometer: 405572082,0.210793,0,9.56232 +accelerometer: 405591125,0.134141,0.114978,9.96474 +accelerometer: 405611084,-0.229956,-0.0958148,9.58148 +accelerometer: 405631042,0.019163,0.134141,9.60065 +irProximity:405644383,0.286275 +accelerometer: 405650787,-0.210793,0.249119,9.33237 +accelerometer: 405670807,-0.153304,-0.210793,9.33237 +proximity:405673985,0 +accelerometer: 405690796,0.287445,0,9.90726 +accelerometer: 405710815,0.19163,-0.019163,9.75395 +accelerometer: 405731231,-0.019163,-4.88656,9.63897 +accelerometer: 405751129,0.134141,4.88656,9.71563 +accelerometer: 405771026,-0.0574889,0,9.58148 +accelerometer: 405791137,-0.134141,0.0766519,9.88809 +accelerometer: 405811126,-0.19163,0.0958148,9.50483 +accelerometer: 405831024,-0.0574889,-0.19163,9.81144 +accelerometer: 405851135,0.153304,-0.0766519,9.71563 +accelerometer: 405871124,-0.0574889,0.019163,9.71563 +accelerometer: 405891052,0.0958148,-0.0383259,9.90726 +accelerometer: 405911163,-0.0383259,-4.86739,9.63897 +accelerometer: 405931091,-0.153304,-0.0574889,9.69646 +accelerometer: 405951050,0.153304,-0.0958148,9.81144 +accelerometer: 405970978,-0.019163,0,9.79228 +accelerometer: 405990844,-0.0958148,-0.114978,9.524 +accelerometer: 406010833,0.114978,0.0383259,9.84977 +accelerometer: 406031067,-0.134141,0.134141,9.56232 +accelerometer: 406051056,0.153304,-0.172467,9.86893 +accelerometer: 406071045,0.0383259,-4.82907,9.56232 +accelerometer: 406090973,-0.0383259,4.88656,9.60065 +accelerometer: 406110992,-0.114978,-0.019163,9.73479 +accelerometer: 406130951,-0.114978,0.0574889,9.61981 +accelerometer: 406150940,-0.0383259,0.210793,9.50483 +accelerometer: 406170929,-0.153304,0.019163,9.71563 +accelerometer: 406190796,0.0574889,0.019163,9.6773 +accelerometer: 406210937,0.114978,0.019163,9.60065 +accelerometer: 406231109,-0.0574889,-0.019163,9.54316 +accelerometer: 406250885,-0.153304,0.0958148,9.6773 +accelerometer: 406270965,0.019163,0.0958148,9.79228 +accelerometer: 406290954,-0.0574889,-0.019163,9.56232 +accelerometer: 406310974,0,0.0574889,9.71563 +accelerometer: 406330993,-0.249119,0.0958148,9.65814 +accelerometer: 406350799,-0.0574889,0.0383259,9.63897 +accelerometer: 406371002,0.210793,-4.86739,9.71563 +accelerometer: 406391021,-0.153304,0.0766519,9.71563 +accelerometer: 406410919,-0.249119,-0.019163,9.63897 +accelerometer: 406430938,-0.0766519,0.0766519,9.86893 +accelerometer: 406450744,-0.019163,-0.019163,9.6773 +accelerometer: 406471405,-0.172467,0.0574889,9.65814 +accelerometer: 406490997,0.019163,-0.019163,9.69646 +accelerometer: 406510925,0.153304,0.0383259,9.8306 +accelerometer: 406531006,-0.0766519,0.19163,9.77311 +accelerometer: 406550750,0.0958148,-0.0958148,9.6773 +accelerometer: 406570953,0.229956,-0.0766519,9.58148 +accelerometer: 406591003,-0.153304,-0.114978,9.73479 +accelerometer: 406610962,0.0766519,-0.134141,9.63897 +accelerometer: 406630951,-0.0383259,-4.88656,9.58148 +accelerometer: 406650909,-0.153304,0.0574889,9.58148 +accelerometer: 406670959,-0.0574889,-0.153304,9.63897 +accelerometer: 406690613,0.0383259,-0.19163,9.63897 +accelerometer: 406710968,-0.0574889,-0.0766519,9.56232 +accelerometer: 406730987,-0.134141,0.0383259,9.77311 +accelerometer: 406751068,0.0574889,0.0766519,9.81144 +accelerometer: 406770935,-0.0383259,0.019163,9.63897 +accelerometer: 406790954,0.114978,0.0574889,9.90726 +accelerometer: 406810943,0.019163,0.0383259,9.65814 +accelerometer: 406830993,-0.249119,-0.019163,9.60065 +accelerometer: 406850555,-0.134141,0.0766519,9.84977 +accelerometer: 406870971,-0.210793,-0.0383259,9.75395 +accelerometer: 406890991,0.0383259,0.0383259,9.73479 +accelerometer: 406910949,0.019163,-0.153304,9.60065 +accelerometer: 406930969,0.0766519,-0.0574889,9.524 +accelerometer: 406950714,0.153304,0.019163,9.69646 +accelerometer: 406971222,0.0383259,-4.82907,9.73479 +accelerometer: 406991058,-0.019163,-4.90572,9.65814 +accelerometer: 407010864,0.0383259,0.0766519,9.79228 +accelerometer: 407030975,0.0958148,-4.79074,9.58148 +accelerometer: 407050811,-0.134141,4.73325,9.61981 +accelerometer: 407070923,-0.0958148,0.0383259,9.71563 +accelerometer: 407090881,0.0766519,0.0766519,9.79228 +accelerometer: 407110748,-0.134141,0.0766519,9.54316 +accelerometer: 407130768,-0.0958148,0.0574889,9.6773 +accelerometer: 407150818,-0.0574889,-0.172467,9.63897 +accelerometer: 407170959,-0.134141,-0.0383259,9.6773 +accelerometer: 407190918,0.0574889,0.019163,9.69646 +accelerometer: 407210968,0.019163,-0.0383259,9.63897 +accelerometer: 407230957,-0.172467,0.0958148,9.73479 +accelerometer: 407250793,-0.0574889,0,9.60065 +accelerometer: 407270935,-0.134141,-0.0383259,9.63897 +accelerometer: 407290954,0,-0.0958148,9.65814 +accelerometer: 407311004,-4.84823,-0.0574889,9.73479 +accelerometer: 407330963,-0.0958148,0.114978,9.81144 +accelerometer: 407350769,0.134141,0.0383259,9.63897 +accelerometer: 407371032,0.0574889,0,9.63897 +accelerometer: 407390930,0.0574889,-0.0383259,9.50483 +accelerometer: 407410980,-0.114978,0,9.524 +accelerometer: 407430938,-0.134141,0.019163,9.6773 +accelerometer: 407450866,-0.0766519,0.0958148,9.81144 +accelerometer: 407470764,-0.019163,-0.019163,9.86893 +accelerometer: 407490905,0.019163,-0.019163,9.63897 +accelerometer: 407510833,-0.0383259,0.019163,9.6773 +accelerometer: 407530914,-0.19163,0.0766519,9.63897 +accelerometer: 407550811,-0.249119,0.229956,9.61981 +accelerometer: 407570923,0.134141,0.0383259,9.54316 +accelerometer: 407590973,-0.153304,-0.019163,9.56232 +accelerometer: 407610962,-0.153304,0,9.63897 +accelerometer: 407630951,0.0383259,0.0958148,9.81144 +accelerometer: 407650787,-0.0574889,0.0766519,9.48567 +accelerometer: 407670898,0.0383259,-0.0574889,9.79228 +accelerometer: 407690796,-0.344933,0.0958148,9.56232 +accelerometer: 407710998,-0.019163,-0.0383259,9.73479 +accelerometer: 407731018,-0.134141,0,9.60065 +accelerometer: 407750824,0.0766519,0.019163,9.73479 +accelerometer: 407770874,0.019163,0.0766519,9.75395 +accelerometer: 407790954,-0.229956,4.88656,9.63897 +accelerometer: 407811004,-0.0766519,-4.86739,9.75395 +accelerometer: 407830963,0.0766519,-0.114978,9.63897 +accelerometer: 407850799,0.0766519,0.0383259,9.6773 +accelerometer: 407870910,0.0766519,0.019163,9.73479 +accelerometer: 407890930,0.0383259,-0.0766519,9.56232 +accelerometer: 407910919,0.019163,-0.19163,9.69646 +accelerometer: 407930969,-0.114978,0.153304,9.65814 +accelerometer: 407950927,0.0574889,4.73325,9.50483 +accelerometer: 407970855,-0.229956,4.84823,9.61981 +accelerometer: 407990967,-0.134141,-0.0383259,9.42818 +accelerometer: 408011078,-0.0574889,0.19163,9.65814 +accelerometer: 408031006,0.0383259,-0.0766519,9.58148 +accelerometer: 408050995,-0.0574889,-0.0958148,9.63897 +accelerometer: 408070923,0.019163,0.019163,9.60065 +accelerometer: 408091003,-0.0383259,0.114978,9.60065 +accelerometer: 408110992,-0.153304,-0.172467,9.44734 +accelerometer: 408130951,0,0.134141,9.54316 +accelerometer: 408150970,-0.134141,0.0766519,9.50483 +accelerometer: 408170898,0,-0.0574889,9.77311 +accelerometer: 408190918,-0.114978,-0.0383259,9.50483 +accelerometer: 408210968,-0.0958148,0.0383259,9.48567 +accelerometer: 408231079,-0.019163,0.0766519,9.90726 +accelerometer: 408250976,0.019163,-0.0766519,9.8306 +accelerometer: 408270935,0.0383259,-0.0958148,9.63897 +accelerometer: 408290954,0.0574889,0.0383259,9.6773 +accelerometer: 408310974,-0.0766519,-0.019163,9.42818 +accelerometer: 408330963,0.114978,-0.0383259,9.60065 +accelerometer: 408350769,0.0766519,-0.0383259,9.65814 +accelerometer: 408370971,0.019163,-4.86739,9.69646 +accelerometer: 408390960,0,0.153304,9.71563 +accelerometer: 408410949,0.0958148,0.0383259,9.69646 +accelerometer: 408430999,-0.153304,-0.019163,9.79228 +accelerometer: 408450805,-0.0383259,-0.0766519,9.65814 +accelerometer: 408470764,-0.0958148,0.153304,9.75395 +accelerometer: 408490936,-0.172467,4.88656,9.69646 +accelerometer: 408510986,0,0.019163,9.69646 +accelerometer: 408530975,0,-0.0958148,9.81144 +accelerometer: 408550995,-0.0958148,0.0574889,9.50483 +accelerometer: 408570923,0.0574889,-0.114978,9.60065 +accelerometer: 408590942,-0.0383259,-0.0766519,9.79228 +accelerometer: 408610931,0.0958148,-4.77158,9.65814 +accelerometer: 408630920,-0.0958148,-4.88656,9.58148 +accelerometer: 408650940,-0.19163,-0.019163,9.77311 +accelerometer: 408670898,0.019163,0.0574889,9.6773 +accelerometer: 408690613,0.019163,-0.0958148,9.8306 +accelerometer: 408710998,-0.172467,0,9.60065 +accelerometer: 408730957,-0.210793,-0.0383259,9.65814 +accelerometer: 408750946,-0.134141,-4.88656,9.69646 +accelerometer: 408770935,-0.0958148,0.0766519,9.77311 +accelerometer: 408790954,-0.0383259,0,9.56232 +accelerometer: 408810974,0.172467,-0.114978,9.69646 +accelerometer: 408830932,0.0574889,-0.0574889,9.58148 +accelerometer: 408850952,0,0.19163,9.65814 +accelerometer: 408870910,0,0.0958148,9.84977 +accelerometer: 408890930,-0.0574889,0.0766519,9.50483 +accelerometer: 408910949,-0.229956,4.71409,9.40902 +accelerometer: 408930999,0.019163,0.0383259,9.6773 +accelerometer: 408950927,-0.19163,0.0958148,9.65814 +accelerometer: 408970886,-0.0958148,0.0766519,9.65814 +accelerometer: 408990967,0.114978,-0.019163,9.60065 +accelerometer: 409010833,-0.114978,0.0383259,9.50483 +accelerometer: 409031036,-0.0383259,-4.88656,9.48567 +accelerometer: 409050995,-0.210793,0.019163,9.63897 +accelerometer: 409071075,-0.134141,0.19163,9.60065 +accelerometer: 409090942,0.153304,-0.0574889,9.75395 +accelerometer: 409110931,0,0.0574889,9.63897 +accelerometer: 409130951,-0.134141,0.0383259,9.69646 +accelerometer: 409150940,-0.0574889,4.82907,9.75395 +accelerometer: 409171142,0.0766519,0.0574889,9.81144 +accelerometer: 409190948,-0.0574889,-0.172467,9.46651 +accelerometer: 409210937,0.134141,-0.153304,9.48567 +accelerometer: 409230957,-0.153304,0.19163,9.6773 +accelerometer: 409250946,0.0574889,0.0383259,9.6773 +accelerometer: 409271087,0,-0.134141,9.69646 +accelerometer: 409290954,0.0958148,4.88656,9.65814 +accelerometer: 409310974,0.0766519,-0.0766519,9.65814 +accelerometer: 409330963,0.19163,-0.0958148,9.77311 +accelerometer: 409350799,-0.0383259,0.268282,9.79228 +accelerometer: 409370605,-0.134141,0.0574889,9.61981 +accelerometer: 409390960,-0.0766519,0.0766519,9.56232 +accelerometer: 409410949,0.0766519,-4.82907,9.56232 +accelerometer: 409430816,-0.0958148,-0.134141,9.77311 +accelerometer: 409450805,0.019163,0.153304,9.77311 +accelerometer: 409470703,-0.153304,0,9.65814 +accelerometer: 409490936,0.0958148,-0.0958148,9.60065 +accelerometer: 409510894,0.019163,0.0383259,9.65814 +accelerometer: 409530945,-0.114978,-0.0574889,9.6773 +accelerometer: 409550995,-0.153304,0.172467,9.54316 +accelerometer: 409570800,-0.134141,-0.0383259,9.56232 +accelerometer: 409590942,-0.0574889,0.019163,9.61981 +accelerometer: 409610962,0.0766519,-0.0766519,9.69646 +accelerometer: 409630981,-0.0383259,-0.134141,9.60065 +accelerometer: 409650940,-0.0958148,-0.114978,9.56232 +accelerometer: 409670807,0.0958148,-0.134141,9.63897 +accelerometer: 409691284,-0.210793,-0.0958148,9.61981 +accelerometer: 409710937,-0.019163,-0.0574889,9.71563 +accelerometer: 409730957,-0.0574889,-0.114978,9.69646 +accelerometer: 409750946,0,0,9.69646 +accelerometer: 409770782,0.0766519,-0.019163,9.58148 +accelerometer: 409790954,-0.0574889,0.0383259,9.56232 +accelerometer: 409810974,-0.153304,4.67576,9.58148 +accelerometer: 409830963,-0.0383259,4.88656,9.6773 +accelerometer: 409850952,0.0383259,0.0958148,9.75395 +accelerometer: 409870788,-0.153304,0,9.61981 +accelerometer: 409890899,-0.0958148,-0.0766519,9.65814 +accelerometer: 409910919,-0.0958148,-0.0574889,9.38986 +accelerometer: 409930938,0.0766519,0.0766519,9.69646 +accelerometer: 409950988,-0.0574889,-0.114978,9.61981 +accelerometer: 409970794,-0.0383259,-0.0958148,9.56232 +accelerometer: 409990967,-0.134141,-0.114978,9.73479 +accelerometer: 410010925,0.0574889,0.0383259,9.73479 +accelerometer: 410031036,-0.0766519,0.0574889,9.6773 +accelerometer: 410050995,-0.0766519,-0.0766519,9.56232 +accelerometer: 410070800,-0.0574889,0.0574889,9.524 +accelerometer: 410090973,-0.0766519,0.114978,9.58148 +accelerometer: 410110931,-0.0958148,4.84823,9.524 +accelerometer: 410130981,-0.153304,0.0958148,9.61981 +accelerometer: 410150940,0,0.0383259,9.69646 +accelerometer: 410170807,0.0958148,-0.114978,9.60065 +accelerometer: 410190887,-0.0958148,0.0383259,9.63897 +accelerometer: 410210968,0.0574889,-0.134141,9.71563 +accelerometer: 410231079,-0.172467,-0.0958148,9.6773 +accelerometer: 410251007,-0.0383259,-0.019163,9.54316 +accelerometer: 410270813,0.019163,-0.0383259,9.69646 +accelerometer: 410290893,-0.0574889,-0.0766519,9.56232 +accelerometer: 410310943,-0.114978,-0.0574889,9.69646 +accelerometer: 410330963,0.019163,-0.019163,9.71563 +accelerometer: 410350799,-0.19163,0.134141,9.60065 +accelerometer: 410370819,-0.114978,-0.019163,9.69646 +accelerometer: 410390930,0.0383259,0.0574889,9.56232 +accelerometer: 410410919,0.0574889,-4.82907,9.81144 +accelerometer: 410430938,0.0574889,-4.88656,9.73479 +accelerometer: 410450805,0.019163,0.19163,9.58148 +accelerometer: 410470703,0.0383259,-0.0574889,9.54316 +accelerometer: 410490936,-0.114978,0.172467,9.6773 +accelerometer: 410510956,-0.0766519,-0.0958148,9.6773 +accelerometer: 410530975,0.0958148,-0.0383259,9.69646 +accelerometer: 410550934,0.134141,-0.0766519,9.71563 +accelerometer: 410570923,-0.0383259,-4.90572,9.69646 +accelerometer: 410590912,-0.268282,0.019163,9.60065 +accelerometer: 410610962,-0.153304,-0.019163,9.61981 +accelerometer: 410630951,-0.134141,0.0766519,9.60065 +accelerometer: 410650940,-0.229956,0.0766519,9.58148 +accelerometer: 410670929,0.0574889,-0.019163,9.58148 +accelerometer: 410691742,0.0766519,0,9.8306 +accelerometer: 410710998,0,-4.84823,9.69646 +accelerometer: 410730957,-0.172467,0.0574889,9.46651 +accelerometer: 410750946,-0.172467,-0.0383259,9.48567 +accelerometer: 410770935,-0.0766519,-0.114978,9.54316 +accelerometer: 410790924,-0.153304,0.019163,9.56232 +accelerometer: 410810943,-0.0958148,0.153304,9.61981 +accelerometer: 410830963,0.0958148,0.172467,9.63897 +accelerometer: 410850952,-0.0383259,-0.0574889,9.73479 +accelerometer: 410870941,-0.0383259,0.0383259,9.60065 +accelerometer: 410890899,-0.134141,0.134141,9.58148 +accelerometer: 410910980,-0.0958148,-0.0958148,9.58148 +accelerometer: 410930969,0,0.210793,9.69646 +accelerometer: 410950958,0.0574889,-0.019163,9.75395 +accelerometer: 410970947,-0.0383259,-0.0574889,9.6773 +accelerometer: 410990936,0.0574889,-0.0574889,9.71563 +accelerometer: 411010864,-0.19163,0.0383259,9.84977 +accelerometer: 411031036,0,-0.0766519,9.54316 +accelerometer: 411050934,0.0574889,-0.172467,9.69646 +accelerometer: 411070984,-0.153304,0.210793,9.58148 +accelerometer: 411090912,0.019163,0.0574889,9.73479 +accelerometer: 411110931,0.134141,-0.172467,9.61981 +accelerometer: 411131805,-0.0574889,0,9.61981 +accelerometer: 411151245,-0.210793,-0.019163,9.46651 +accelerometer: 411170959,-0.0958148,0.19163,9.6773 +accelerometer: 411190979,0.0958148,0,9.65814 +accelerometer: 411211029,-0.0574889,-0.0574889,9.75395 +accelerometer: 411230957,0.0766519,0.0958148,9.69646 +accelerometer: 411250793,0.229956,-0.0958148,9.71563 +accelerometer: 411270874,-0.0958148,0.172467,9.524 +accelerometer: 411290924,0,0,9.75395 +accelerometer: 411310974,-0.019163,-0.019163,9.63897 +accelerometer: 411330932,-0.0383259,0.19163,9.6773 +accelerometer: 411350799,-0.0383259,0.0958148,9.61981 +accelerometer: 411371002,0.0574889,-0.134141,9.8306 +accelerometer: 411390899,-0.0383259,-0.0958148,9.63897 +accelerometer: 411410980,-0.0383259,0.153304,9.69646 +accelerometer: 411430969,-0.19163,-0.114978,9.88809 +accelerometer: 411450958,0.210793,0,9.75395 +accelerometer: 411470703,0.0958148,-0.19163,9.58148 +accelerometer: 411490936,-0.0766519,0.019163,9.63897 +accelerometer: 411510833,-0.019163,-0.153304,9.6773 +accelerometer: 411530945,-0.019163,0.0958148,9.524 +accelerometer: 411550964,-0.0383259,-4.86739,9.65814 +accelerometer: 411570953,0.114978,4.84823,9.73479 +accelerometer: 411591095,-0.210793,0.0766519,9.6773 +accelerometer: 411610931,-0.114978,0.172467,9.88809 +accelerometer: 411630920,-0.0383259,0.0958148,9.71563 +accelerometer: 411651001,-0.019163,-0.019163,9.6773 +accelerometer: 411670959,0.210793,-0.0766519,9.54316 +accelerometer: 411691040,-0.0766519,0.0383259,9.63897 +accelerometer: 411710785,-0.0574889,0.019163,9.71563 +accelerometer: 411730835,-0.153304,0,9.69646 +accelerometer: 411750976,-0.153304,0.0574889,9.56232 +accelerometer: 411770935,-0.153304,0,9.61981 +accelerometer: 411791015,0.019163,-0.134141,9.48567 +accelerometer: 411810943,-0.019163,0.114978,9.60065 +accelerometer: 411830932,0,-0.0383259,9.77311 +accelerometer: 411850921,0.0958148,-0.172467,9.6773 +accelerometer: 411870971,0.0383259,-0.0383259,9.73479 +accelerometer: 411890564,-0.0766519,-0.114978,9.75395 +accelerometer: 411910858,-0.0766519,-0.019163,9.63897 +accelerometer: 411930908,0.0383259,0.019163,9.71563 +accelerometer: 411950927,0.019163,0.114978,9.63897 +accelerometer: 411971100,-0.0958148,4.77158,9.79228 +accelerometer: 411990814,0.0958148,-0.0383259,9.60065 +accelerometer: 412010894,0.0383259,-0.0383259,9.69646 +accelerometer: 412031006,-0.114978,0.19163,9.60065 +accelerometer: 412050964,-0.19163,0.0383259,9.61981 +accelerometer: 412070953,-0.0766519,0,9.50483 +accelerometer: 412090790,0.364096,-0.134141,9.60065 +accelerometer: 412110779,-0.114978,0.114978,9.58148 +accelerometer: 412130859,-0.0766519,-0.019163,9.50483 +accelerometer: 412150757,0.153304,-0.0574889,9.79228 +accelerometer: 412170868,0.0383259,-4.84823,9.6773 +accelerometer: 412190765,-0.0574889,-0.0383259,9.63897 +accelerometer: 412210907,-0.0766519,0,9.81144 +accelerometer: 412231109,-0.153304,-4.82907,9.79228 +accelerometer: 412250976,-0.019163,-0.114978,9.69646 +accelerometer: 412270935,-0.153304,0.172467,9.42818 +accelerometer: 412290802,-0.153304,-0.0958148,9.65814 +accelerometer: 412311004,-0.114978,-0.0383259,9.61981 +accelerometer: 412330963,-0.153304,-0.0574889,9.63897 +accelerometer: 412350799,-0.0766519,-0.0574889,9.63897 +accelerometer: 412371002,-0.19163,-0.0958148,9.61981 +accelerometer: 412390838,0.0383259,0.134141,9.58148 +accelerometer: 412410919,-0.0766519,-0.134141,9.54316 +accelerometer: 412430938,-0.19163,-4.88656,9.56232 +accelerometer: 412450927,-0.172467,0.0383259,9.63897 +accelerometer: 412470703,-0.172467,0.19163,9.44734 +accelerometer: 412490783,0.0574889,0.114978,9.65814 +accelerometer: 412510925,-0.0574889,-0.134141,9.77311 +accelerometer: 412530975,0.0383259,0.019163,9.81144 +accelerometer: 412550903,0.019163,-0.019163,9.73479 +accelerometer: 412570923,0.0574889,0.114978,9.50483 +accelerometer: 412590820,0.0766519,-0.0574889,9.71563 +accelerometer: 412610931,0.0383259,-0.0766519,9.65814 +accelerometer: 412630951,0,-0.0766519,9.60065 +accelerometer: 412650970,0.0766519,0.0766519,9.73479 +accelerometer: 412670929,0.19163,-0.210793,9.71563 +accelerometer: 412690796,0.0574889,0.0574889,9.6773 +accelerometer: 412710937,0.134141,-4.88656,9.44734 +accelerometer: 412730957,0,0,9.73479 +accelerometer: 412750915,0.0383259,-0.114978,9.56232 +accelerometer: 412770935,-0.0766519,-0.0958148,9.524 +accelerometer: 412790832,0.134141,0,9.6773 +accelerometer: 412810974,-0.134141,0.134141,9.54316 +accelerometer: 412830963,-0.134141,0.0958148,9.63897 +accelerometer: 412850952,0.0383259,-0.210793,9.54316 +accelerometer: 412870941,0.0383259,4.88656,9.8306 +accelerometer: 412890777,0.0766519,0.0958148,9.60065 +accelerometer: 412910888,0.0383259,-0.0574889,9.54316 +accelerometer: 412930938,0,-0.0574889,9.65814 +accelerometer: 412950927,-0.210793,0.0766519,9.56232 +accelerometer: 412970916,-0.210793,-0.0766519,9.65814 +accelerometer: 412990967,0.134141,-0.0383259,9.65814 +accelerometer: 413010650,-0.0574889,0.0574889,9.524 +accelerometer: 413031097,-0.019163,0.114978,9.63897 +accelerometer: 413050934,-0.0766519,0.134141,9.65814 +accelerometer: 413070923,0.0958148,-0.0574889,9.77311 +accelerometer: 413090942,0.019163,0.210793,9.6773 +accelerometer: 413110901,-0.114978,0.153304,9.75395 +accelerometer: 413130920,0.019163,-0.172467,9.54316 +accelerometer: 413150940,-0.0766519,0.019163,9.50483 +accelerometer: 413170929,-4.88656,-0.0766519,9.77311 +accelerometer: 413190918,0.019163,-0.0383259,9.65814 +accelerometer: 413210663,-0.0574889,-0.306608,9.6773 +accelerometer: 413231018,-0.0574889,0,9.60065 +accelerometer: 413250915,0.383259,0.019163,9.86893 +accelerometer: 413270935,-0.268282,-0.210793,9.17906 +accelerometer: 413290893,0.440748,-0.019163,9.90726 +accelerometer: 413311920,0.210793,0,9.75395 +accelerometer: 413330780,-0.019163,-0.0958148,9.61981 +accelerometer: 413350769,-0.0958148,-0.019163,9.65814 +accelerometer: 413370910,-0.114978,0.0574889,9.6773 +accelerometer: 413390899,0.019163,-0.0958148,9.77311 +accelerometer: 413410888,-0.268282,0.210793,9.48567 +accelerometer: 413430969,-0.019163,-0.0574889,9.58148 +accelerometer: 413450958,-0.0766519,0.019163,9.65814 +accelerometer: 413470794,-0.134141,4.80991,9.58148 + diff --git a/tests/auto/qsensorgestures_gestures/mockcommon.cpp b/tests/auto/qsensorgestures_gestures/mockcommon.cpp index f9b0498..44e9ce0 100644 --- a/tests/auto/qsensorgestures_gestures/mockcommon.cpp +++ b/tests/auto/qsensorgestures_gestures/mockcommon.cpp @@ -99,6 +99,7 @@ bool mockcommonPrivate::parseData(const QString &line) if (sensorToken == QLatin1String("accelerometer")) { if (!firstRun) { + Q_EMIT accelData(data); if (prevts == 0 || prevts > 90000 ) prevts = 20000; // use 20 Hz diff --git a/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp b/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp index f1c4ad3..fcfd9a8 100644 --- a/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp +++ b/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp @@ -58,6 +58,8 @@ private Q_SLOTS: void initTestCase(); void testTiltedTwist(); + void testNotPickup(); + void testNotHover2(); void testNotHover(); void testNotWhip(); @@ -405,7 +407,6 @@ void tst_sensorgestures_gestures::testTiltedTwist() QStringList gestStringList; gestStringList << "QtSensors.twist"; - QScopedPointer<QSensorGesture> gesture(new QSensorGesture(gestStringList)); QCOMPARE(gesture->invalidIds().count(),0); @@ -421,6 +422,28 @@ void tst_sensorgestures_gestures::testTiltedTwist() QCOMPARE(arguments.at(0).toString(), QLatin1String("twistLeft")); } +void tst_sensorgestures_gestures::testNotPickup() +{ +// QString name = "mock_data/sensordata_notpickup.dat"; + +// QStringList gestStringList; +// gestStringList << "QtSensors.pickup" << "QtSensors.twist"; + +// QScopedPointer<QSensorGesture> gesture(new QSensorGesture(gestStringList)); + +// QCOMPARE(gesture->invalidIds().count(),0); +// QSignalSpy spy_gesture(gesture.data(), SIGNAL(detected(QString))); + +// QCOMPARE(mockcommonPrivate::instance()->setFile(name), true); +// gesture.data()->startDetection(); +// QCOMPARE(gesture->isActive(),true); + +// QTRY_COMPARE_WITH_TIMEOUT(spy_gesture.count(),1, 7000); + +// QList<QVariant> arguments = spy_gesture.takeFirst(); +// QCOMPARE(arguments.at(0).toString(), QLatin1String("twistLeft")); +} + QTEST_MAIN(tst_sensorgestures_gestures) |