Android

时间:2016-12-06 21:37:20

标签: android qt gps

我在QTCreator for Android中编写了一个应用程序。从gps我的位置有问题。 当我在手机中运行应用程序时,我没有协调。在qDebug我看到了:

  

(void gps :: startLocationAPI()):QGeoPositionInfoSourceAndroid(0x9f8c06d0)

什么是括号没有重要性,因为每次此值不同(0xb03c9ba0,0xb03d2ba0,0xf01c9d10)

这是我的代码:

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)
{
}

1 个答案:

答案 0 :(得分:0)

如果输出m_pLocationInfo,它将始终输出不同的地址,因为这是一个指针,并且每次运行程序时其地址很可能会更改。

如果你这样做:

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

然后你应该得到gps坐标。

您可能希望连接error信号,以了解是否出现问题:

gps::startLocationAPI()中,添加

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

并将error(QGeoPositionInfoSource::Error)设为gps类的插槽:

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

然后你会知道出了什么问题。