Что-то читаю доку по QGeoPositionInfoSource, QGeoPositionInfo, и не могу понять, как вообще определить, есть ли на борту телефона GPS-оборудование или нет, и включено ли оно.
Я вроде как умею определять отсутствие данных, например по отсутсвию обновления:
// Инициализация датчика ГЕО-положения
isGeoPositionInfoUpdated=false; // Флаг, что свойство geoPositionInfo еще ни разу не обновлялось
positionSource=QGeoPositionInfoSource::createDefaultSource(this);
if(positionSource) {
connect(positionSource, SIGNAL(positionUpdated(QGeoPositionInfo)),
this, SLOT(geoPositionInfoUpdate(QGeoPositionInfo)));
positionSource->startUpdates();
}
...
void DataFromLocalSensors::geoPositionInfoUpdate(const QGeoPositionInfo &info)
{
geoPositionInfo=info;
isGeoPositionInfoUpdated=true;
}
Но этот метод не позволяет понять по какой причине нет данных - толи GPS оборудования нет, толи GPS отключен, толи сигнала нет.
Пробовал определиться по списку availableSources():
QString positionSourceNames;
foreach( QString name, QGeoPositionInfoSource::availableSources())
positionSourceNames+=(" "+name);
positionSourceNames="["+positionSourceNames+']';
В результате на десктопе, где нет GPS, имеется один элемент - «geoclue». На андроидофонах имеется один элемент - «android». Причем его наличие не зависит от того, включен GPS или нет.
Так вот интесресует, как определить отсутствие/наличие/работу GPS оборудования. Это мне нужно для окошка, в котором пользователю показывается, какие сенсоры у телефона имеются и включены.