Spanish English

Información general

Esta página proporciona información general sobre ejemplos de código que utilizan la Sensors API [doc.qt.nokia.com], una de las tantas APIs que forman parte de la suite Qt Mobilty.

Detector de caídas

El ejemplo del Detecto de caídas [wiki.forum.nokia.com] de Forum Nokia usa el acelerómetro en un dispositivo móvil para detectar si un usuario se ha caído, este ejemplo utiliza:

  • Location API [doc.qt.nokia.com] para obtener la ubicación de el usuario.
  • la Contacts API [doc.qt.nokia.com] para almacenar y acceder a una dirección de correo electrónico para ser notificado en caso de una caída.
  • y la Messaging API [doc.qt.nokia.com] para enviar una notificación por email con una foto adjunta.

Fall Dector Screen Shot

Aquí esta el fragmento de código del detector de caídas usando el API de Sensores:

  1. #include <QAccelerometer>
  2.  
  3. // Neccessary for Qt Mobility API usage
  4. QTM_USE_NAMESPACE
  5.  
  6. class AccelerationInfo : public QObject, public QAccelerometerFilter
  7. {
  8.     Q_OBJECT
  9.  
  10. public:
  11.  
  12.     AccelerationInfo(QObject* parent = 0) : QObject(parent)
  13.     {
  14.         m_sensor = new QAccelerometer(this);
  15.         m_sensor->addFilter(this);
  16.         m_sensor->start();
  17.     }
  18.  
  19. private slots:
  20.  
  21.     // Override of QAcclerometerFilter::filter(QAccelerometerReading*)
  22.     void filter(QAccelerometerReading* reading)
  23.     {
  24.         qreal x = reading->x();
  25.         qreal y = reading->y();
  26.         qreal z = reading->z();
  27.  
  28.         // Process acceleration sensor readings ...
  29.  
  30.         qDebug("Current device acceleration: x=%f y=%f z=%f", x, y, z);
  31.     }
  32.  
  33. private:
  34.  
  35.     QAccelerometer* m_sensor;
  36. };

Usando el acelerómetro para controlar un modelo Open GL-ES 3D

El tutorial sobre sensores en Mobile Qt-Entwicklung [mobileqt.de] (Mobile Qt Development) muestra el acelerometro en un N900 manipulando un modelo 3D que ha sido creado usando Open GL. El texto descriptivo esta en Alemán [mobileqt.de], pero todo el codigo esta disponible para descargar en un paquete [mobileqt.de] y esta demo en vídeo [youtube.com] muestra como funciona.

Aquí está el código relevante del acelerómetro:

  1. GLWidget::GLWidget(QWidget *parent) :
  2.     QGLWidget(parent)
  3.  
  4. {
  5.     setWindowTitle(tr("Sensor-GL-Demo"));
  6.     makeCurrent();
  7.  
  8.     setAttribute(Qt::WA_PaintOnScreen);
  9.     setAttribute(Qt::WA_NoSystemBackground);
  10.     setAutoBufferSwap(false);
  11.  
  12.     xRot = 0;
  13.     yRot = 0;
  14.     zRot = 0;
  15.  
  16.     _rotationSensorAvailable = false;
  17.     _rotationSensor = new QtMobility::QAccelerometer(this);
  18.     _rotationSensor->connect();
  19.     if (!_rotationSensor->isAvailable()) {
  20.         qWarning("Kein Beschleunigungssensor verfügbar!");
  21.     } else {
  22.         _rotationSensorAvailable = true;
  23.         _rotationSensor->setSignalEnabled(false); // wir holen uns die Werte selbst ab
  24.         _rotationSensor->setUpdateInterval(100); // so schnell wie möglich
  25.         _rotationSensor->start();
  26.     }
  27.  
  28.     QTimer *timer = new QTimer(this);
  29.     timer->setInterval(10);
  30.     QObject::connect(timer, SIGNAL(timeout()), this, SLOT(updateGL()));
  31.     timer->start();
  32.     showFullScreen();
  33. }

Categories: