summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensorgestures
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@nokia.com>2012-05-24 16:50:07 +1000
committerQt by Nokia <qt-info@nokia.com>2012-05-24 23:41:05 +0200
commit6e8bc699d4ee14a4abd6c5b0b6f1a5ad0abbe52c (patch)
tree59942bbd5c4fe0322d79f5ccf172f383958fa96c /src/plugins/sensorgestures
parent2b9190a9604135e91da5e473b61ba44b47cb7bea (diff)
fix false positive sensor gesture recognition when slam is too close to head
Change-Id: Ic6aa24ca44b6cb61c1592bd8536a092d7ec0fc90 Reviewed-by: Lorn Potter <lorn.potter@nokia.com>
Diffstat (limited to 'src/plugins/sensorgestures')
-rw-r--r--src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp25
-rw-r--r--src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h2
2 files changed, 24 insertions, 3 deletions
diff --git a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp
index b19973f6..2762e2cd 100644
--- a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp
@@ -71,12 +71,20 @@ QString QHoverSensorGestureRecognizer::id() const
bool QHoverSensorGestureRecognizer::start()
{
if (QtSensorGestureSensorHandler::instance()->startSensor(QtSensorGestureSensorHandler::IrProximity)) {
- active = true;
- connect(QtSensorGestureSensorHandler::instance(),SIGNAL(irProximityReadingChanged(QIRProximityReading *)),
- this,SLOT(irProximityReadingChanged(QIRProximityReading *)));
+ if (QtSensorGestureSensorHandler::instance()->startSensor(QtSensorGestureSensorHandler::Orientation)) {
+ active = true;
+ connect(QtSensorGestureSensorHandler::instance(),SIGNAL(irProximityReadingChanged(QIRProximityReading *)),
+ this,SLOT(irProximityReadingChanged(QIRProximityReading *)));
+ connect(QtSensorGestureSensorHandler::instance(),SIGNAL(orientationReadingChanged(QOrientationReading *)),
+ this,SLOT(orientationReadingChanged(QOrientationReading *)));
+ } else {
+ QtSensorGestureSensorHandler::instance()->stopSensor(QtSensorGestureSensorHandler::IrProximity);
+ active = false;
+ }
} else {
active = false;
}
+
detecting = false;
detectedHigh = 0;
initialReflectance = 0;
@@ -87,8 +95,11 @@ bool QHoverSensorGestureRecognizer::start()
bool QHoverSensorGestureRecognizer::stop()
{
QtSensorGestureSensorHandler::instance()->stopSensor(QtSensorGestureSensorHandler::IrProximity);
+ QtSensorGestureSensorHandler::instance()->stopSensor(QtSensorGestureSensorHandler::Orientation);
disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(irProximityReadingChanged(QIRProximityReading *)),
this,SLOT(irProximityReadingChanged(QIRProximityReading *)));
+ disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(orientationReadingChanged(QOrientationReading *)),
+ this,SLOT(orientationReadingChanged(QOrientationReading *)));
active = false;
return active;
}
@@ -98,6 +109,12 @@ bool QHoverSensorGestureRecognizer::isActive()
return active;
}
+
+void QHoverSensorGestureRecognizer::orientationReadingChanged(QOrientationReading *reading)
+{
+ orientationReading = reading;
+}
+
void QHoverSensorGestureRecognizer::irProximityReadingChanged(QIRProximityReading *reading)
{
reflectance = reading->reflectance();
@@ -157,6 +174,8 @@ void QHoverSensorGestureRecognizer::irProximityReadingChanged(QIRProximityReadin
bool QHoverSensorGestureRecognizer::checkForHovering()
{
+ if (orientationReading->orientation() != QOrientationReading::FaceUp)
+ return false;
if ( (reflectance > 0.2 && reflectance < 0.4)
&& (initialReflectance - reflectance) < -0.1)
return true;
diff --git a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h
index 27b30151..1a6c5dc6 100644
--- a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h
@@ -68,10 +68,12 @@ Q_SIGNALS:
void hover();
private slots:
+ void orientationReadingChanged(QOrientationReading *reading);
void irProximityReadingChanged(QIRProximityReading *reading);
void timeout();
void timeout2();
private:
+ QOrientationReading *orientationReading;
qreal reflectance;
QTimer *timer2;