Sophie

Sophie

distrib > Mageia > 6 > x86_64 > media > core-updates > by-pkgid > aa084d0e0126d94ee0fb846ebdf50e37 > files > 375

qtsensors5-doc-5.9.4-1.mga6.noarch.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- qtsensorgestures-plugins.qdoc -->
  <title>QtSensorGestures Plugins | Qt Sensors 5.9</title>
  <link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
  <script type="text/javascript">
    document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");
    // loading style sheet breaks anchors that were jumped to before
    // so force jumping to anchor again
    setTimeout(function() {
        var anchor = location.hash;
        // need to jump to different anchor first (e.g. none)
        location.hash = "#";
        setTimeout(function() {
            location.hash = anchor;
        }, 0);
    }, 0);
  </script>
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="main">
    <div class="main-rounded">
      <div class="navigationbar">
        <table><tr>
<td >Qt 5.9</td><td ><a href="qtsensors-index.html">Qt Sensors</a></td><td >QtSensorGestures Plugins</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right">Qt 5.9.4 Reference Documentation</td>
        </tr></table>
      </div>
    </div>
<div class="content">
<div class="line">
<div class="content mainContent">
<div class="sidebar">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#overview">Overview</a></li>
<li class="level2"><a href="#recognizer-classes">Recognizer Classes</a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">QtSensorGestures Plugins</h1>
<span class="subtitle"></span>
<!-- $$$sensorgesture_plugins_topics-description -->
<div class="descr"> <a name="details"></a>
<p>The QtSensorGestures recognizer plugins are the way to create your own sensor gestures.</p>
<p>Creating software to recognize motion gestures using sensors is a huge subject not covered here.</p>
<p>The <a href="qsensorgesture.html">QSensorGesture</a> 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.</p>
<a name="overview"></a>
<h4 >Overview</h4>
<p>The steps for creating a sensor gesture plugin are as follows:</p>
<ul>
<li>Sub-class from <a href="qsensorgestureplugininterface.html">QSensorGesturePluginInterface</a></li>
<li>Sub-class from <a href="qsensorgesturerecognizer.html">QSensorGestureRecognizer</a> and implement gesture recognizer logic using <a href="qtsensors-module.html">QtSensors</a>.</li>
<li>Create an instance of that recognizer in the derived <a href="qsensorgestureplugininterface.html">QSensorGesturePluginInterface</a> class, and call <a href="qsensorgesturemanager.html#registerSensorGestureRecognizer">QSensorGestureManager::registerSensorGestureRecognizer</a>(sRec); in your registerRecognizers() function. <a href="qsensorgesturemanager.html">QSensorGestureManager</a> will retain ownership of the recognizer object.<p>This is the class in which the gesture recognizer system should be implemented from.</p>
</li>
</ul>
<pre class="cpp">

  MySensorGestureRecognizer<span class="operator">::</span>MySensorGestureRecognizer(<span class="type">QObject</span> <span class="operator">*</span>parent)
      : <span class="type"><a href="qsensorgesturerecognizer.html">QSensorGestureRecognizer</a></span>(parent)
  {
  }

  MySensorGestureRecognizer<span class="operator">::</span><span class="operator">~</span>MySensorGestureRecognizer()
  {
  }

  bool MySensorGestureRecognizer<span class="operator">::</span>start()
  {
      Q_EMIT mySignal();
      <span class="keyword">return</span> <span class="keyword">true</span>;
  }

  bool MySensorGestureRecognizer<span class="operator">::</span>stop()
  {
      <span class="keyword">return</span> <span class="keyword">true</span>;
  }

  bool MySensorGestureRecognizer<span class="operator">::</span>isActive()
  {
      <span class="keyword">return</span> <span class="keyword">true</span>;
  }

  <span class="type">void</span>  MySensorGestureRecognizer<span class="operator">::</span>create()
  {
  }

  <span class="type">QString</span> MySensorGestureRecognizer<span class="operator">::</span>id() <span class="keyword">const</span>
  {
      <span class="keyword">return</span> <span class="type">QString</span>(<span class="string">&quot;QtSensors.mygestures&quot;</span>);
  }

  MySensorGesturePlugin<span class="operator">::</span>MySensorGesturePlugin(){}
  MySensorGesturePlugin<span class="operator">::</span><span class="operator">~</span>MySensorGesturePlugin(){}

  <span class="type">QList</span> <span class="operator">&lt;</span><span class="type"><a href="qsensorgesturerecognizer.html">QSensorGestureRecognizer</a></span> <span class="operator">*</span><span class="operator">&gt;</span>  MySensorGesturePlugin<span class="operator">::</span>createRecognizers()
  {
      <span class="type">QList</span> <span class="operator">&lt;</span><span class="type"><a href="qsensorgesturerecognizer.html">QSensorGestureRecognizer</a></span> <span class="operator">*</span><span class="operator">&gt;</span>  recognizers;
      MySensorGestureRecognizer <span class="operator">*</span>recognizer <span class="operator">=</span> <span class="keyword">new</span> MySensorGestureRecognizer(<span class="keyword">this</span>);
      recognizers<span class="operator">.</span>append(recognizer);

      <span class="keyword">return</span> recognizers;
  }

  <span class="type">QStringList</span> MySensorGesturePlugin<span class="operator">::</span>supportedIds() <span class="keyword">const</span>
  {
         <span class="keyword">return</span> <span class="type">QStringList</span>() <span class="operator">&lt;</span><span class="operator">&lt;</span> <span class="string">&quot;QtSensors.mygestures&quot;</span>;
  }

</pre>
<a name="recognizer-classes"></a>
<h5 >Recognizer Classes</h5>
<p>If you are making sensorgestures available through the QtSensorGestures API, these are the classes to subclass.</p>
<div class="table"><table class="annotated">
<tr class="odd topAlign"><td class="tblName"><p><a href="qsensorgestureplugininterface.html">QSensorGesturePluginInterface</a></p></td><td class="tblDescr"><p>The pure virtual interface to sensor gesture plugins</p></td></tr>
<tr class="even topAlign"><td class="tblName"><p><a href="qsensorgesturerecognizer.html">QSensorGestureRecognizer</a></p></td><td class="tblDescr"><p>The base class for a sensor gesture recognizer</p></td></tr>
</table></div>
<a name="qt-sensor-gestures"></a><a name="recognizer-plugins"></a>
<h6 >Recognizer Plugins</h6>
<p>The Sensor Gesture Recognizers that come with Qt are made using an ad-hoc heuristic approach. The user cannot define their own gestures, and must learn how to perform and accommodate the pre-defined gestures herein.</p>
<p>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 is it possible for the user to define his own sensor-based motion gestures.</p>
<p>A procedure for writing ad-hoc recognizers might include:</p>
<ul>
<li>Obtain and gather output from the accelerometer through <code>QAccelerometerReading</code> of a gesture being performed.</li>
<li>Use various methods and constraints on the accelerometer data to recognize the various states:<ol class="i" type="i"><li>Initial &quot;listening&quot; state for a gesture</li>
<li>Start of a possible gesture, moving into a &quot;detecting&quot; state</li>
<li>End of a possible gesture, moving into a &quot;recognizing&quot; state</li>
<li>and finally, if it is recognized, the &quot;recognized&quot; state, or if not recognized, move back to the &quot;listening&quot; state.</li>
</ol>
</li>
<li>Test procedure to make sure it is easy to perform, and will not produce too many false positive recognitions, or collisions if used with other gestures. Meaning that gestures performed get recognized as another gesture instead.</li>
</ul>
<p>Below you will find a list of included plugins and their signals.</p>
<p>For the ShakeGestures plugin:</p>
<div class="table"><table class="generic">
 <tr valign="top" class="odd"><td >Recognizer Id</td><td >Signals</td></tr>
<tr valign="top" class="even"><td ><a href="qtsensors-module.html">QtSensors</a>.shake</td><td >shake</td></tr>
</table></div>
<p>For the QtSensorGestures plugin:</p>
<div class="table"><table class="generic">
 <tr valign="top" class="odd"><td >Recognizer Id</td><td >Signals</td><td >Description</td><td >Images</td></tr>
<tr valign="top" class="even"><td ><a href="qtsensors-module.html">QtSensors</a>.cover</td><td >cover</td><td >Hand covers up phone display for one second, when it's face up, using the Proximity and Orientation sensors.</td><td ><p class="centerAlign"><img src="images/sensorgesture-cover.png" alt="" /></p></td></tr>
<tr valign="top" class="odd"><td ><a href="qtsensors-module.html">QtSensors</a>.doubletap</td><td >doubletap</td><td >Double tap of finger on phone, using the DoubleTap sensor.</td><td ><p class="centerAlign"><img src="images/sensorgesture-doubletap.png" alt="" /></p></td></tr>
<tr valign="top" class="even"><td ><a href="qtsensors-module.html">QtSensors</a>.hover</td><td >hover</td><td >Hand hovers about 4 cm above the phone for more than 1 second, then is removed when face up, using the IR Proximity sensor.</td><td ><p class="centerAlign"><img src="images/sensorgesture-hover.png" alt="" /></p></td></tr>
<tr valign="top" class="odd"><td ><a href="qtsensors-module.html">QtSensors</a>.pickup</td><td >pickup</td><td >Phone is resting face up on a flat curface, and is then picked up and brought up into viewing position. Uses the Accelerometer sensor.</td><td ><p class="centerAlign"><img src="images/sensorgesture-faceup.png" alt="" /></p></td></tr>
<tr valign="top" class="even"><td ><a href="qtsensors-module.html">QtSensors</a>.shake2</td><td >shakeLeft, shakeRight, shakeUp, shakeDown</td><td >Shake phone in a certain direction, using the Accelerometer sensor.</td><td ><p class="centerAlign"><img src="images/sensorgesture-shake.png" alt="" /></p></td></tr>
<tr valign="top" class="odd"><td ><a href="qtsensors-module.html">QtSensors</a>.slam</td><td >slam</td><td >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. Uses the Accelerometer and Orientation sensors.</td><td ><p class="centerAlign"><img src="images/sensorgesture-slam_1.png" alt="" /></p><p class="centerAlign"><img src="images/sensorgesture-slam_2.png" alt="" /></p></td></tr>
<tr valign="top" class="even"><td ><a href="qtsensors-module.html">QtSensors</a>.turnover</td><td >turnover</td><td >Phone is turned face down and placed on a surface, using Proximity and Orientation sensors.</td><td ><p class="centerAlign"><img src="images/sensorgesture-facedown.png" alt="" /></p></td></tr>
<tr valign="top" class="odd"><td ><a href="qtsensors-module.html">QtSensors</a>.twist</td><td >twistLeft, twistRight</td><td >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.</td><td ><p class="centerAlign"><img src="images/sensorgesture-twist.png" alt="" /></p></td></tr>
<tr valign="top" class="even"><td ><a href="qtsensors-module.html">QtSensors</a>.whip</td><td >whip</td><td >Move phone quickly down and then back up. Uses the Accelerometer and Orientation sensors.</td><td ><p class="centerAlign"><img src="images/sensorgesture-whip.png" alt="" /></p></td></tr>
</table></div>
</div>
<!-- @@@sensorgesture_plugins_topics -->
        </div>
       </div>
   </div>
   </div>
</div>
<div class="footer">
   <p>
   <acronym title="Copyright">&copy;</acronym> 2017 The Qt Company Ltd.
   Documentation contributions included herein are the copyrights of
   their respective owners.<br>    The documentation provided herein is licensed under the terms of the    <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation    License version 1.3</a> as published by the Free Software Foundation.<br>    Qt and respective logos are trademarks of The Qt Company Ltd.     in Finland and/or other countries worldwide. All other trademarks are property
   of their respective owners. </p>
</div>
</body>
</html>