首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Android的QT5.3RC中的QtPositioning错误

基于Android的QT5.3RC中的QtPositioning错误
EN

Stack Overflow用户
提问于 2014-05-19 12:29:40
回答 1查看 679关注 0票数 0

我正在Android上试验Qt在QT5.3RC中的定位。这是我的代码示例,在这里我创建了位置和卫星的来源:

代码语言:javascript
复制
QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(this);
    if (source) {
        QStringList posSourcesList = QGeoPositionInfoSource::availableSources();
        qDebug() << "Position sources count: " << posSourcesList.count();
        foreach (const QString &src, posSourcesList) {
           qDebug() << "pos source in list: " << src;
        }

        source->startUpdates();
        connect(source, SIGNAL(positionUpdated(QGeoPositionInfo)),
                this, SLOT(positionUpdated(QGeoPositionInfo)));
    }
    //----------------------------------------------------------------------------------

    QGeoSatelliteInfoSource *satelliteSource = QGeoSatelliteInfoSource::createDefaultSource(this);
    if(satelliteSource)
    {
        QStringList sourcesList = QGeoSatelliteInfoSource::availableSources();
        qDebug() << "Satellites sources count: " << sourcesList.count();
        foreach (const QString &src, sourcesList) {
           qDebug() << "source in list: " << src;
        }

        satelliteSource->startUpdates();
        connect(satelliteSource, SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>)),
                this, SLOT(satellitesInViewUpdated(QList<QGeoSatelliteInfo>)));
        }

我用输出来分割:

代码语言:javascript
复制
D/Qt      (16403): ../test_GPS/gpshandler.cpp:14 (GPSHandler::GPSHandler(QObject*)): Position sources count:  1
D/Qt      (16403): ../test_GPS/gpshandler.cpp:16 (GPSHandler::GPSHandler(QObject*)): pos source in list:  "android"
D/QtPositioning(16403): Regular updates using GPS
D/QtPositioning(16403): Regular updates using network
D/Qt      (16403): ../test_GPS/gpshandler.cpp:37 (GPSHandler::GPSHandler(QObject*)): Satellites sources count:  1
D/Qt      (16403): ../test_GPS/gpshandler.cpp:39 (GPSHandler::GPSHandler(QObject*)): source in list:  "android"
F/Qt      (16403): jnipositioning.cpp:496 (void satelliteUpdated(JNIEnv*, jobject, jobjectArray, jint, jboolean)): satelliteUpdated: source == 0

下面是回溯:

代码语言:javascript
复制
0 ?? /home/qtproj/build-test_GPS-Android_for_armeabi_v7a_GCC_4_8_Qt_5_3_0-Debug/libc.so  0x4010a8e8
1 abort /home/qtproj/build-test_GPS-Android_for_armeabi_v7a_GCC_4_8_Qt_5_3_0-Debug/libc.so  0x40108948
2 QMessageLogger::fatal(char const*, ...) const /opt/Qt-5.3.0_rc/5.3/android_armv7/lib/libQt5Core.so  0x75357ff6
3 satelliteUpdated(_JNIEnv*, _jobject*, _jobjectArray*, int, unsigned char) /opt/Qt-5.3.0_rc/5.3/android_armv7/plugins/position/libqtposition_android.so  0x751a8c08
4 ??   0x40b3a910
5 ??   0x40b3a910

当我只创建QGeoPositionInfoSource或QGeoSatelliteInfoSource时,不会发生此错误。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2014-07-22 08:07:31

5.3.1中仍然存在同样的错误。我没有提供任何解释,但这里的解决办法是改变源的初始化顺序。

  1. QGeoSatelliteInfoSource
  2. QGeoPositionInfoSource

所以在你的代码里

代码语言:javascript
复制
QGeoSatelliteInfoSource *satelliteSource = QGeoSatelliteInfoSource::createDefaultSource(this);
if(satelliteSource) {
    QStringList sourcesList = QGeoSatelliteInfoSource::availableSources();
    qDebug() << "Satellites sources count: " << sourcesList.count();
    foreach (const QString &src, sourcesList) {
       qDebug() << "source in list: " << src;
    }

    satelliteSource->startUpdates();
    connect(satelliteSource, SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>)),
            this, SLOT(satellitesInViewUpdated(QList<QGeoSatelliteInfo>)));
}

QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(this);
if (source) {
    QStringList posSourcesList = QGeoPositionInfoSource::availableSources();
    qDebug() << "Position sources count: " << posSourcesList.count();
    foreach (const QString &src, posSourcesList) {
       qDebug() << "pos source in list: " << src;
    }

    source->startUpdates();
    connect(source, SIGNAL(positionUpdated(QGeoPositionInfo)),
            this, SLOT(positionUpdated(QGeoPositionInfo)));
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23737781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档