2016-12-06 1 views
1

Ich schreibe eine Anwendung in QTCreator für Android. Ich habe ein Problem mit meinem Standort von GPS. Wenn ich Anwendung in meinem Telefon ausführen, koordinierte ich nicht. In qDebug Ich sehe dies:Seltsame Fehler mit QGeoPositionInfoSource von Android

(Leeren GPS :: startLocationAPI()): QGeoPositionInfoSourceAndroid (0x9f8c06d0)

Was ist Klammer, weil jedes Mal, keine Bedeutung hat dieser Wert unterscheidet (0xb03c9ba0 , 0xb03d2ba0, 0xf01c9d10)

dies ist mein Code:

gps.h:

#ifndef GPS_H 
#define GPS_H 
#include <QMainWindow> 
#include <QGeoPositionInfo> 
#include <QGeoPositionInfoSource> 
class gps : public QObject 
{ 
Q_OBJECT 
public: 
    explicit gps(QWidget *parent = 0); 
    virtual ~gps(); 
public slots: 
    void positionUpdated(QGeoPositionInfo geoPositionInfo); 
    void startLocationAPI(); 
private: 
    QGeoPositionInfoSource *m_pLocationInfo; 
}; 
#endif //GPS_H 

gps.cpp

#include "gps.h" 

#include <QGeoCoordinate> 
#include <QGeoPositionInfo> 
#include <QGeoPositionInfoSource> 
#include <QDebug> 

gps::gps(QWidget *parent) 
: QObject(parent), m_pLocationInfo(NULL) 
{ 
    startLocationAPI(); 
} 

gps::~gps() 
{ 
} 

void gps::startLocationAPI() 
{ 
    if (!m_pLocationInfo) 
    { 
     m_pLocationInfo =QGeoPositionInfoSource::createDefaultSource(0); 
     m_pLocationInfo->setPreferredPositioningMethods(QGeoPositionInfoSource::NonSatellitePositioningMethods); 
     connect(m_pLocationInfo, SIGNAL (positionUpdated(QGeoPositionInfo)),this, SLOT (positionUpdated(QGeoPositionInfo))); 
     m_pLocationInfo->startUpdates(); 
     qDebug() << m_pLocationInfo; 
    } 
} 

void gps::positionUpdated(QGeoPositionInfo geoPositionInfo) 
{ 
} 
+0

Wird 'gps :: positionUpdated' aufgerufen? Haben Sie versucht, 'qDebug() <<" Hello "' da hinein zu stellen, um zu sehen, ob es aufgerufen wird? – jpo38

Antwort

0

Wenn Sie Ausgang m_pLocationInfo es wird immer ausgegeben verschiedene Adressen, da dies ein Zeiger ist und seine Adresse ändert die meisten wahrscheinlich jedes Mal, wenn Sie das Programm ausführen.

Wenn Sie das tun:

void gps::positionUpdated(QGeoPositionInfo geoPositionInfo) 
{ 
    qDebug() << geoPositionInfo.coordinate().toString(); 
} 

Dann sollten Sie GPS-Koordinaten erhalten.

Sie können das error Signal zu wissen, zu verbinden, wenn etwas schief gelaufen ist:

In gps::startLocationAPI(), fügen

connect(m_pLocationInfo, SIGNAL (error(QGeoPositionInfoSource::Error)),this, SLOT (error(QGeoPositionInfoSource::Error))); 

und error(QGeoPositionInfoSource::Error) ein Slot Ihres GPS-Klasse machen sein:

void gps::error(QGeoPositionInfoSource::Error positioningError) 
{ 
    qDebug() << "An error occured: " << positioningError; 
} 

Dann wissen Sie, ob etwas schief gelaufen ist.