Table of Content
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.

Aquí esta el fragmento de código del detector de caídas usando el API de Sensores:
- #include <QAccelerometer>
- // Neccessary for Qt Mobility API usage
- QTM_USE_NAMESPACE
- {
- Q_OBJECT
- public:
- {
- m_sensor = new QAccelerometer(this);
- m_sensor->addFilter(this);
- m_sensor->start();
- }
- private slots:
- // Override of QAcclerometerFilter::filter(QAccelerometerReading*)
- void filter(QAccelerometerReading* reading)
- {
- qreal x = reading->x();
- qreal y = reading->y();
- qreal z = reading->z();
- // Process acceleration sensor readings ...
- qDebug("Current device acceleration: x=%f y=%f z=%f", x, y, z);
- }
- private:
- QAccelerometer* m_sensor;
- };
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:
- {
- setWindowTitle(tr("Sensor-GL-Demo"));
- makeCurrent();
- setAutoBufferSwap(false);
- xRot = 0;
- yRot = 0;
- zRot = 0;
- _rotationSensorAvailable = false;
- _rotationSensor = new QtMobility::QAccelerometer(this);
- _rotationSensor->connect();
- if (!_rotationSensor->isAvailable()) {
- qWarning("Kein Beschleunigungssensor verfügbar!");
- } else {
- _rotationSensorAvailable = true;
- _rotationSensor->setSignalEnabled(false); // wir holen uns die Werte selbst ab
- _rotationSensor->setUpdateInterval(100); // so schnell wie möglich
- _rotationSensor->start();
- }
- timer->setInterval(10);
- timer->start();
- showFullScreen();
- }

