Browse Source

Fix position updates on Android

QGC4.4
DonLakeFlyer 8 years ago
parent
commit
625bf95190
  1. 18
      src/PositionManager/PositionManager.cpp
  2. 6
      src/PositionManager/PositionManager.h

18
src/PositionManager/PositionManager.cpp

@ -32,6 +32,7 @@ void QGCPositionManager::setToolbox(QGCToolbox *toolbox) @@ -32,6 +32,7 @@ void QGCPositionManager::setToolbox(QGCToolbox *toolbox)
if(!_defaultSource) {
//-- Otherwise, create a default one
_defaultSource = QGeoPositionInfoSource::createDefaultSource(this);
qDebug() << _defaultSource;
}
_simulatedSource = new SimulatedPosition();
@ -43,7 +44,7 @@ void QGCPositionManager::setToolbox(QGCToolbox *toolbox) @@ -43,7 +44,7 @@ void QGCPositionManager::setToolbox(QGCToolbox *toolbox)
setPositionSource(QGCPositionSource::GPS);
}
void QGCPositionManager::positionUpdated(const QGeoPositionInfo &update)
void QGCPositionManager::_positionUpdated(const QGeoPositionInfo &update)
{
emit lastPositionUpdated(update.isValid(), QVariant::fromValue(update.coordinate()));
emit positionInfoUpdated(update);
@ -58,7 +59,7 @@ void QGCPositionManager::setPositionSource(QGCPositionManager::QGCPositionSource @@ -58,7 +59,7 @@ void QGCPositionManager::setPositionSource(QGCPositionManager::QGCPositionSource
{
if (_currentSource != nullptr) {
_currentSource->stopUpdates();
disconnect(_currentSource, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(positionUpdated(QGeoPositionInfo)));
disconnect(_currentSource);
}
switch(source) {
@ -77,8 +78,19 @@ void QGCPositionManager::setPositionSource(QGCPositionManager::QGCPositionSource @@ -77,8 +78,19 @@ void QGCPositionManager::setPositionSource(QGCPositionManager::QGCPositionSource
_updateInterval = _currentSource->minimumUpdateInterval();
_currentSource->setPreferredPositioningMethods(QGeoPositionInfoSource::SatellitePositioningMethods);
_currentSource->setUpdateInterval(_updateInterval);
connect(_currentSource, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(positionUpdated(QGeoPositionInfo)));
connect(_currentSource, &QGeoPositionInfoSource::positionUpdated, this, &QGCPositionManager::_positionUpdated);
connect(_currentSource, &QGeoPositionInfoSource::updateTimeout, this, &QGCPositionManager::_updateTimeout);
connect(_currentSource, SIGNAL(error(QGeoPositionInfoSource::Error)), this, SLOT(_error(QGeoPositionInfoSource::Error)));
_currentSource->startUpdates();
}
}
void QGCPositionManager::_error(QGeoPositionInfoSource::Error positioningError)
{
qWarning() << "QGCPositionManager error" << positioningError;
}
void QGCPositionManager::_updateTimeout(void)
{
qWarning() << "QGCPositionManager updateTimeout";
}

6
src/PositionManager/PositionManager.h

@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
#pragma once
#include <QtPositioning/qgeopositioninfosource.h>
#include <QGeoPositionInfoSource>
#include <QVariant>
@ -37,7 +37,9 @@ public: @@ -37,7 +37,9 @@ public:
void setToolbox(QGCToolbox* toolbox);
private slots:
void positionUpdated(const QGeoPositionInfo &update);
void _positionUpdated(const QGeoPositionInfo &update);
void _error(QGeoPositionInfoSource::Error positioningError);
void _updateTimeout(void);
signals:
void lastPositionUpdated(bool valid, QVariant lastPosition);

Loading…
Cancel
Save