Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android上Qt 5.3 RC中的Qt定位错误_Android_C++_Qt5 - Fatal编程技术网

Android上Qt 5.3 RC中的Qt定位错误

Android上Qt 5.3 RC中的Qt定位错误,android,c++,qt5,Android,C++,Qt5,我正在Android上的Qt5.3RC中试验Qt定位。 这是我的代码示例,我在其中创建位置和卫星源: QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(this); if (source) { QStringList posSourcesList = QGeoPositionInfoSource::availableSources(); qDebug()

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

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>)));
        }
以下是回溯:

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
当我仅创建QGeoPositionFoSource或QGeoSatelliteInfoSource时,不会发生此错误。
有什么建议吗?

5.3.1中仍然存在相同的错误。我没有解释,但这里的解决方法是更改源代码的初始化顺序

  • QGeostelliteInfosource
  • QGeoPositionFosource
  • 所以在你的代码中

    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)));
    }
    
    qgeostelliteinfosource*satelliteSource=qgeostelliteinfosource::createDefaultSource(此);
    if(卫星源){
    QStringList sourcesList=QGeoSatelliteInfoSource::availableSources();
    qDebug()
    
    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)));
    }