summaryrefslogtreecommitdiffstats
path: root/src/sensors/doc/src/qtsensorgestures-plugins.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/sensors/doc/src/qtsensorgestures-plugins.qdoc')
-rw-r--r--src/sensors/doc/src/qtsensorgestures-plugins.qdoc167
1 files changed, 167 insertions, 0 deletions
diff --git a/src/sensors/doc/src/qtsensorgestures-plugins.qdoc b/src/sensors/doc/src/qtsensorgestures-plugins.qdoc
new file mode 100644
index 00000000..67734aad
--- /dev/null
+++ b/src/sensors/doc/src/qtsensorgestures-plugins.qdoc
@@ -0,0 +1,167 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\group sensorgesture_plugins_topics
+\title QtSensorGestures Plugins
+\brief Information about the QtSensorGestures recognizer plugins.
+
+The QtSensorGestures recognizer plugins are the way to create your own
+sensor gestures.
+
+Creating software to recognize motion gestures using sensors is a huge subject not covered here.
+
+The QSensorGesture API does not limit usage to any of the common classification methods of gesture
+recognition such as Hidden Markov Models, Neural Networks, Dynamic Time Warping, or even the
+ad-hoc heuristic recognizers of Qt's built-in sensor gesture recognizers. It's basically a
+signaling system for lower level gesture recogition methods and algorithms to communicate to the
+higher level applications.
+
+\tableofcontents
+
+\section1 Overview
+
+ The steps to creating a sensor gesture plugin are as follows:
+\list
+\li Sub-class from QSensorGesturePluginInterface
+\li Sub-class from QSensorGestureRecognizer and implement gesture recognizer logic using QtSensors.
+\li Create an instance of that recognizer in the derived QSensorGesturePluginInterface class, and call
+ QSensorGestureManager::registerSensorGestureRecognizer(sRec); in your registerRecognizers()
+function. QSensorGestureManager will retain ownership of the recognizer object.
+
+This is the class in which the gesture recognizer system should be implemented from.
+
+\endlist
+
+\snippet sensorgestures/plugin.cpp Plugin
+
+
+\section2 Recognizer Classes
+
+If you are making sensorgestures available through the QtSensorGestures API, these are the
+classes to subclass.
+
+\annotatedlist sensorgestures_recognizer
+
+\target Qt Sensor Gestures
+\section3 Recognizer Plugins
+
+The Sensor Gesture Recognizers that come with Qt are made using an ad-hock heurustic approach.
+The user cannot define their own gestures, and must learn how to perform and accomodate the
+pre-defined gestures herein.
+
+A developer may use any method including computationally and training intensive well
+ known classifiers, to produce gesture recognizers. There are currently no classes in Qt for
+gesture training, nor ability for the user to define their own sensor based motion gestures.
+
+A procedure for writing ad-hock recognizers might include:
+\list
+ \li Obtain and gather output from the accelerometer through QAccelerometerReading of a gesture being performed.
+ \li Use various methods and constraints on the accelerometer data to recognize the various states:
+ \list i
+ \li Initial 'listening' state for a gesture
+ \li Start of a possible gesture, moving into a 'detecting' state
+ \li End of a possible gesture, moving into a 'recognizing' state
+ \li and finally, if it is recognized, the 'recognized' state, or if not recognized, move back to
+ the 'listening' state.
+ \endlist
+ \li Test procedure to make sure it is easy to perform, and will not
+ produce too many false positive recognitions. And if used with other gestures, collisions. Meaning
+that gestures performed get recognized as another gesture instead.
+
+\endlist
+
+Here is a list of included plugins and their signals
+
+For ShakeGestures plugin:
+ \table
+ \row
+ \li Recognizer Id
+ \li Signals
+ \row
+ \li QtSensors.shake
+ \li shake
+\endtable
+
+For QtSensorGestures plugin:
+ \table
+ \row
+ \li Recognizer Id
+ \li Signals
+ \li Description
+ \li Images
+ \row
+ \li QtSensors.cover
+ \li cover
+ \li Hand covers up phone display for one second, when it's face up, using the Proximity and Orientation sensors.
+ \li \image sensorgesture-cover.png
+ \row
+ \li QtSensors.doubletap
+ \li doubletap
+ \li Double tap of finger on phone, using the DoubleTap sensor.
+ \li \image sensorgesture-doubletap.png
+ \row
+ \li QtSensors.hover
+ \li hover
+ \li Hand hovers about 4 cm above the phone for more than 1 second, then is removed when face up,
+ using the IR Proximity sensor.
+ \li \image sensorgesture-hover.png
+ \row
+ \li QtSensors.pickup
+ \li pickup
+ \li Phone is resting face up on a flat curface, and is then picked up and brought up into viewing position, using the Accelerometer sensor.
+ \li \image sensorgesture-faceup.png
+ \row
+ \li QtSensors.shake2
+ \li shakeLeft, shakeRight, shakeUp, shakeDown
+ \li Shake phone in a certain direction, using the Accelerometer sensor.
+ \li \image sensorgesture-shake.png
+ \row
+ \li QtSensors.slam
+ \li slam
+ \li Phone is held in a top up position with a side facing forward for a moment. Swing it quickly with a downward motion
+ like it is being used to point at something with the top corner. using the Accelerometer and Orientation sensors.
+ \li \image sensorgesture-slam_1.png
+ \image sensorgesture-slam_2.png
+ \row
+ \li QtSensors.turnover
+ \li turnover
+ \li Phone is turned face down and placed on a surface, using Proximity and Orientation sensors.
+ \li \image sensorgesture-facedown.png
+ \row
+ \li QtSensors.twist
+ \li twistLeft, twistRight
+ \li Phone is held face up and then twisted left or right (left side up or right side up) and back, using the Accelerometer and Orientation sensors.
+ \li \image sensorgesture-twist.png
+ \row
+ \li QtSensors.whip
+ \li whip
+ \li Move phone quickly down and then back up. using the Accelerometer and Orientation sensors.
+ \li \image sensorgesture-whip.png
+ \endtable
+
+*/