Tacti Phone

Working with GPS in Qt

In this article, I will describe how to write a simple program that will display the coordinates of your movement. The development process will consist of three steps: connecting the necessary libraries, developing logic, visualizing the result.
Qt GPS

1. Connecting the required libraries

To work with the phone’s GPS sensor, Qt uses the QGeoPositionInfoSource class from the Qt Mobility package.
To connect it to the project, you need to tell qmake that we want to use Qt Mobility, namely the Location module.
To do this, open the following lines in the profile of your project: Now we include the header file describing the QGeoPositionInfoSource class and call the QTM_USE_NAMESPACE macro,
CONFIG += mobility
MOBILITY += location

1.#include <QGeoPositionInfoSource>
2.QTM_USE_NAMESPACE

Attention! In Qt5 grade class QGeoPositionInfoSource transferred to the module QtLocation.
In addition, if you are writing an application for Symbian, you must declare the appropriate permissions for using GPS (Capabilities) in the profile:
symbian:TARGET.CAPABILITY += Location
Now you can proceed to write the application logic.

2. Get GPS coordinates from Qt

Coordinates are obtained in 4 stages.
1. Creation of a new instance of the QGeoPositionInfoSource class. To do this, the createDefaultSource method is used, which returns a source that reads coordinates from the default geodata source. In principle, it may not even be GPS coordinates, but A-GPS, or even GLONASS.
2. Connection of the necessary signals and slots ( position updates and update timeout );
3. Setting the interval and making requests to obtain device coordinates using the set update interval and start updates methods ;
4. Processing the obtained coordinates by transferring them to the QML interface.
Below is the code that implements all of this.

01.gpsTest::gpsTest(QObject *parent) :
02.QObject(parent)
03.{
04.// 1. 
05.QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(this);
06.// 2. 
07.connect(source, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(slotPositionUpdated(QGeoPositionInfo)));
08.connect(source, SIGNAL(updateTimeout()), this, SLOT(slotPositionTimeout()));
09.// 3. 
10.// Если задать 0, то частота запросов будет автоматически регулироваться классом
11.source->setUpdateInterval(0);
12.source->startUpdates();
13.}
14.// 
15.void gpsTest::slotPositionUpdated(QGeoPositionInfo info)
16.{
17.QGeoCoordinate coordinate = info.coordinate();
18.emit gotCoordinates(QVariant(coordinate.latitude()), QVariant(coordinate.longitude()));
19.}
20.// 
21.void gpsTest::slotPositionTimeout()
22.{
23.qDebug() << "timeout";
24.}

3. Visualization of phone movement

After receiving the coordinates, the gotCoordinates signal is generated. The slot associated with this signal is in the QML code.
There are many examples on the internet of how to connect a Qt signal to a QML slot. To do this, you need to get a pointer to the QGraphicsObject associated with the QmlApplicationViewer. After that, signals and slots are connected according to the standard scheme using connect ():

01.Q_DECL_EXPORT int main(int argc, char *argv[])
02.{
03.QScopedPointer<QApplication> app(createApplication(argc, argv));
04.QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
05.viewer->setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
06.viewer->setMainQmlFile(QLatin1String("qml/GpsTest/main.qml"));
07.viewer->showExpanded();
08.gpsTest *test = new gpsTest(app);
09.QObject *graphics = dynamic_cast<QGraphicsObject*> ((QGraphicsObject*)viewer.data()->rootObject());
10.QObject::connect(test, SIGNAL(gotCoordinates(QVariant,QVariant)), graphics, SLOT(gotCoordinates(QVariant,QVariant)));
11.return app->exec();
12.}

Slots in QML are declared as simple functions, so it is enough to simply declare the function of the same name:

1.function gotCoordinates(lattitude, longitude)
2.{
3.console.log("x: " + lattitude +
4."y: " + longitude);
5.}

To visualize the movement of the phone, I will simply display a list of the coordinates that the phone was at. To do this, you need to declare a Flickable area in QML, and is it a Text element with a list of coordinates. The Flickable object is needed so that you can flip through multi-line text. Without it, only the upper lines of text will be displayed on the screen, and the lower ones will go beyond the screen area and will be inaccessible.

01.Flickable{
02.id: flickable
03.anchors.fill: parent
04.clip:true
05.contentHeight: data.paintedHeight
06.contentWidth: data.paintedWidth
07.Text{
08.id: data
09.width: flickable.width
10.height: flickable.height
11.}
12.}

The coordinate list will now scroll normally across the screen.

Toute la gamme iPhone en promo chez SFR

L’opérateur SFR propose dés aujourd’hui une offre promotionnelle sur toute la gamme iPhone soit une réduction de 100€ sur tous les iPhone pour tout nouvel abonnement. Peut-être une manière de célébrer la sortie de l’iPhone 4 blanc, sorti il y a désormais deux semaines. Ainsi, l’iPhone 3GS 8 Go passe au prix de 29,90€, l’iPhone 4 16 Go et iPhone 4 blanc 16 Go sont proposés au prix de 129,90€ au lieu de 229,90€, quand à la version de 32 Go de l’iPhone 4 blanc et iPhone 4 noir, elle passe de 349,90€ à 249,90€.

Toute la gamme iPhone en promo chez SFR

Cette offre étant une offre de remboursement dite différée, vous devrez, afin de pouvoir en bénéficier débourser le prix total auquel est initialement vendu votre iPhone puis imprimer votre bon de réduction, une fois votre achat effectuée, et le renvoyer par la poste à SFR qui se chargera de vous rembourser.

Un peu compliqué, toutefois, c’est toujours 100€ de gagné sur l’achat d’un nouvel iPhone.

Découvrez tous les détails de l’offre sur le site de https://cliquedmedia.com/web-design-ireland.

5 millions d’exemplaires en trois jours pour l’iPhone 5

L’iPhone 5 se vend bien, merci. Il se vend même extrêmement bien si on en croit les premiers chiffres de ventes communiqués par Apple. L’iPhone 5 se serait ainsi écoulé à plus de 5 millions d’exemplaires lors des trois premiers jours de sa commercialisation.

C’est colossal et c’est un record qu’Apple ne manque pas de communiquer à toute la presse : l’iPhone 5 a trouvé cinq millions de preneurs en seulement trois jours. Cupertino annonce également que 100 millions d’appareils sous iOS ont été mis à jour vers iOS 6.

5 millions d’exemplaires en trois jours pour l’iPhone 5

Pour revenir aux ventes de l’iPhone 5, ce chiffre est la somme des ventes du smartphone Apple dans neuf pays : USA, France, Allemagne, Angleterre, Japon, Hong-Kong, Singapour, Australie et Canada. Si on compare à l’iPhone 4S, ce dernier avait fait 4 millions le week-end de sa sortie l’année dernière, l’iPhone 4 avait quant à lui fait 1,7 million en trois jours.

Apple précise que la totalité des stocks initiaux d’iPhone 5 a été écoulée. C’est tous les ans le même scénario, c’est vrai, mais des records sont également battus tous les ans… Dès la fin de la semaine, 22 pays rejoindront la liste et pourront ainsi se procurer l’iPhone 5. L’objectif d’Apple est de toucher les 100 pays d’ici la fin de cette année.

Retrouvez toutes les ventes de l’iPhone 5 sur nos pages Facebook et Twitter.