English Spanish
Table of Content
Overview
This page points to and provides quick overviews of existing code examples using the Sensors API [doc.qt.nokia.com], one of the suite of Qt Mobilty APIs.
Fall detector
The Fall Detector example [wiki.forum.nokia.com] from Forum Nokia uses the accelerometer in a mobile device to detect if the user has fallen, then uses the
- Location API [doc.qt.nokia.com] to get the user’s location
- the Contacts API [doc.qt.nokia.com] to store and access an email address to be notified in the event of a fall
- and the Messaging API [doc.qt.nokia.com] to send an email notification with photo attachment.

Here’s the code snippet for the fall detector using the Sensors API:
- #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;
- };
Use accelerometer to control an Open GL-ES 3D model
This sensors tutorial from Mobile Qt-Entwicklung [mobileqt.de] (Mobile Qt Development) shows the accelerometer in an N900 manipulating a 3D model created using Open GL. The descriptive text is in German [mobileqt.de], but all the code is available in a downloadable package [mobileqt.de] and this demo video [youtube.com] shows you how it works.
Here is the relevant accelerometer code:
- {
- 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("No acceleration sensor available!");
- } else {
- _rotationSensorAvailable = true;
- _rotationSensor->setSignalEnabled(false); // we get the values from the sensor itself
- _rotationSensor->setUpdateInterval(100); // as quickly as possible
- _rotationSensor->start();
- }
- timer->setInterval(10);
- timer->start();
- showFullScreen();
- }

