×
Namespaces

Variants
Actions
(Difference between revisions)

Accelerometer Sensor Example Using QtMobility Project

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (Hamishwillee - Improve Abstract)
hamishwillee (Talk | contribs)
m (Text replace - "<code cpp>" to "<code cpp-qt>")
 
(2 intermediate revisions by one user not shown)
Line 102: Line 102:
 
==Source==
 
==Source==
  
<code cpp>
+
<code cpp-qt>
  
 
#include "accelerometer.h"
 
#include "accelerometer.h"
Line 199: Line 199:
 
* [[QtMagnetometer Sensor Example Using QtMobility Project]]
 
* [[QtMagnetometer Sensor Example Using QtMobility Project]]
 
* [[Turning phone into magnetic compass using Qt mobility project]]
 
* [[Turning phone into magnetic compass using Qt mobility project]]
* [[Compass Sensor Example Using QtMobility Project]]
+
* [[Compass Sensor Example Using QtMobility Project]][[Category:MeeGo Harmattan]] [[Category:Symbian]]

Latest revision as of 04:23, 11 October 2012

This code snippet shows how to use the Qt Mobilty QAccelerometer and Sensor APIs to get and display sensor data.

Article Metadata
Code ExampleTested with
Devices(s): N8,C7,E7
Compatibility
Platform(s): Symbian
Symbian
Article
Keywords: QAccelerometer,Qt Mobility ,Sensor API
Created: chintandave_er (18 Nov 2010)
Last edited: hamishwillee (11 Oct 2012)

Contents

[edit] Preconditions

Read this for how to CS001615 - Setting up Qt Mobility

[edit] Project File (.pro file)

  • Add the Qt Mobility project configuration option in the .Pro file as shown below
CONFIG += mobility
MOBILITY += sensors
  • here is the full project(.pro) file.
QT       += core gui
 
TARGET = QtAccelerometer
TEMPLATE = app
 
 
SOURCES += main.cpp\
accelerometer.cpp
 
HEADERS += accelerometer.h
 
CONFIG += mobility
CONFIG += debug
MOBILITY = sensors
 
symbian {
TARGET.UID3 = 0xe239264e
# TARGET.CAPABILITY +=
TARGET.EPOCSTACKSIZE = 0x14000
TARGET.EPOCHEAPSIZE = 0x020000 0x800000
}


[edit] Header

Here is the accelerometer.h header file.

#include <QtGui/QMainWindow>
#include <QGraphicsView>
#include <QBasicTimer>
#include <QTimer>
#include <QAccelerometer> // Add Sensor Class
 
// add Qt Mobility Project Namespace
QTM_USE_NAMESPACE
 
class QGraphicsRectItem;
class QGraphicsSimpleTextItem;
 
 
class Accelerometer : public QGraphicsView
{
Q_OBJECT
 
public:
Accelerometer(QWidget *parent = 0);
 
protected:
bool event(QEvent *event);
 
private:
void updateXYZPosition();
 
private:
QGraphicsRectItem *Rect;
QGraphicsSimpleTextItem *text;
QAccelerometer *accelerometerSensor;
QBasicTimer Timer;
QTimer inactiveTimer;
};


[edit] Source

#include "accelerometer.h"
 
#include <QGraphicsRectItem>
#include <QGraphicsSimpleTextItem>
#include <QResizeEvent>
#include <QTimerEvent> // timer event
#include <QDebug>
 
Accelerometer::Accelerometer(QWidget *parent) : QGraphicsView(parent), Rect(0), text(0), accelerometerSensor(0)
{
QGraphicsScene *scene = new QGraphicsScene(this);
setScene(scene);
 
Rect = new QGraphicsRectItem();
 
text = new QGraphicsSimpleTextItem(Rect);
text->setBrush(Qt::gray);
scene->addItem(Rect);
 
accelerometerSensor = new QAccelerometer(this);
inactiveTimer.setSingleShot(true);
 
if (!Timer.isActive())
Timer.start(20, this);
 
// start the sensor
if (!accelerometerSensor->isActive())
accelerometerSensor->start();
 
if (!accelerometerSensor->isActive())
{
qDebug() << "accelerometer sensor didn't start!" << endl;
}
 
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}
 
bool Accelerometer::event(QEvent *event)
{
switch (event->type()) {
case QEvent::Timer:
if (static_cast<QTimerEvent*>(event)->timerId() == Timer.timerId())
updateXYZPosition(); // update the xyz position
break;
default:
break;
}
return QGraphicsView::event(event);
}
 
void Accelerometer::updateXYZPosition()
{
QAccelerometerReading *reading = accelerometerSensor->reading();
qreal xacceleration = 0.0f;
qreal yacceleration = 0.0f;
qreal zacceleration = 0.0f;
if (reading) {
xacceleration = reading->x();
yacceleration = reading->y();
zacceleration = reading->z();
 
// for debug purpose
qDebug() << "xacceleration x" << endl;
qDebug() << xacceleration << endl;
 
qDebug() << "yacceleration y" << endl;
qDebug() << yacceleration << endl;
 
qDebug() << "zacceleration z" << endl;
qDebug() << zacceleration << endl;
 
// set the text and display it on the screen
QLocale c(QLocale::C);
text->setText("x: " + c.toString(xacceleration) + " y: " + c.toString(yacceleration) + " z: " + c.toString(zacceleration));
 
}
}

[edit] Postconditions

Here is the QtAccelerometer Application's Screenshot. You can change the Accelerometer Sensor data from Qt Simulator.

QtAccelerometerSimulator.png QtAccelerometer.png

[edit] Example Applications

Example application can be found on the following link File:QtAccelerometer QtMobility.zip.

[edit] Related Articles

This page was last modified on 11 October 2012, at 04:23.
211 page views in the last 30 days.
×