Класс LocationSettings
(Sailfish::Mdm::LocationSettings)
Класс LocationSettings управляет функциями геопозиционирования устройства. Подробнее…
Заголовочный файл: | #include <mdm-location.h> |
Публичные типы
- enum DataSource { NoDataSources, OnlineDataSources, DeviceSensorsData, BluetoothData, ..., LastDataSource }
- flags DataSources
- enum LocationMode { HighAccuracyMode, BatterySavingMode, DeviceOnlyMode }
- enum Mode
Свойства
- allowedDataSources : DataSources
- gpsAvailable : const bool
- gpsEnabled : bool
- locationEnabled : bool
- locationMode : LocationMode
Публичные методы
- LocationSettings(QObject *parent = Q_NULLPTR)
- LocationSettings(Mode mode, QObject *parent = Q_NULLPTR)
- bool agpsAgreementAccepted(const QString &agpsProvider) const
- bool agpsAvailable(const QString &agpsProvider) const
- bool agpsEnabled(const QString &agpsProvider) const
- void allowDataSource(DataSource dataSource)
- DataSources allowedDataSources() const
- QStringList availableAgpsProviders() const
- void disallowDataSource(DataSource dataSource)
- bool gpsAvailable() const
- bool gpsEnabled() const
- bool gpsFlightMode() const
- bool locationEnabled() const
- LocationMode locationMode() const
- void setAgpsAgreementAccepted(const QString &agpsProvider, bool value)
- void setAgpsEnabled(const QString &agpsProvider, bool value)
- void setAllowedDataSources(DataSources dataSources)
- void setGpsEnabled(bool value)
- void setGpsFlightMode(bool value)
- void setLocationEnabled(bool value)
- void setLocationMode(LocationMode locationMode)
Сигналы
- void allowedDataSourcesChanged()
- void gpsEnabledChanged()
- void gpsFlightModeChanged()
- void locationEnabledChanged()
- void locationModeChanged()
Подробное описание
Класс LocationSettings управляет функциями геопозиционирования устройства.
С его помощью можно включать и отключать различные методы работы с GPS и aGPS.
Для использования данного класса в qmake-настройки проекта клиента следует добавить следующее:
CONFIG += link_pkgconfig
PKGCONFIG += sailfishmdm
и затем #include <mdm-location.h>
.
Пример использования:
#include <mdm-location.h>
void enableOrDisableGps(bool enable, QObject *parent)
{
Sailfish::Mdm::LocationSettings *settings = new Sailfish::Mdm::LocationSettings(parent);
settings->setGpsEnabled(enable);
settings->setGpsFlightMode(!enable);
settings->setLocationEnabled(enable);
}
Описание типов класса
enum LocationSettings::DataSource flags LocationSettings::DataSources
Определяет доступные источники данных о местоположении.
Константа | Значение | Описание |
---|---|---|
Sailfish::Mdm::LocationSettings::NoDataSources |
0UL |
Источники данных не используются |
Sailfish::Mdm::LocationSettings::OnlineDataSources |
1UL<<0 |
Онлайн-сервисы |
Sailfish::Mdm::LocationSettings::DeviceSensorsData |
1UL<<5 |
Данные датчика устройства |
Sailfish::Mdm::LocationSettings::BluetoothData |
1UL<<10 |
Данные о местоположении по Bluetooth |
Sailfish::Mdm::LocationSettings::WlanData |
1UL<<15 |
Данные о местоположении WLAN |
Sailfish::Mdm::LocationSettings::CellTowerData |
1UL<<20 |
Вышки мобильной сотовой связи |
Sailfish::Mdm::LocationSettings::GpsData |
1UL<<25 |
Спутниковая система навигации (GPS) |
Sailfish::Mdm::LocationSettings::GlonassData |
1UL<<26 |
Глобальная навигационная спутниковая система (ГЛОНАСС) |
Sailfish::Mdm::LocationSettings::BeidouData |
1UL<<27 |
Навигационная спутниковая система BeiDou (BDS) |
Sailfish::Mdm::LocationSettings::GalileoData |
1UL<<28 |
Спутниковая система Галилео |
Sailfish::Mdm::LocationSettings::QzssData |
1UL<<29 |
Квазизенитная спутниковая система (QZSS) |
Sailfish::Mdm::LocationSettings::SbasData |
1UL<<30 |
Спутниковая система дополнения (SBAS) |
Sailfish::Mdm::LocationSettings::LastDataSource |
1UL<<31 |
Значение-заполнитель, указывающее последнее возможное значение в этом перечислении. |
Тип DataSources type — это typedef для QFlags<DataSource>. Он хранит комбинацию OR значений DataSource.
enum LocationSettings::LocationMode
В данном перечислении описаны конкретные способы определения местоположения устройства. Каждый способ по своей сути является краткой формой выбора нескольких настроек.
Константа | Значение | Описание |
---|---|---|
Sailfish::Mdm::LocationSettings::HighAccuracyMode |
0 |
Для определения местоположения устройства используются GPS (Глобальная система позиционирования), а также aGPS (Assisted GPS) или какой-либо поставщик сетевого местоположения |
Sailfish::Mdm::LocationSettings::BatterySavingMode |
1 |
Для определения местоположения устройства используются поставщики сетевого местоположения и аппаратное позиционирование (например, с помощью триангуляции базовых станций), но не GPS |
Sailfish::Mdm::LocationSettings::DeviceOnlyMode |
2 |
Для определения местоположения устройства используются GPS и aGPS, а также аппаратное позиционирование (например, с помощью триангуляции базовых станций), но не поставщики местоположения |
enum LocationSettings::Mode
Данное перечисление определяет синхронный и асинхронный способы получения и изменения настроек.
Константа | Значение | Описание |
---|---|---|
Sailfish::Mdm::LocationSettings::AsynchronousMode |
0 |
При получении или изменении значения настройки метод сразу же передаёт управление вызывающему коду. При изменении значения сама настройка не изменяется до момента подтверждения изменения от backend-библиотек |
Sailfish::Mdm::LocationSettings::SynchronousMode |
1 |
Попытки получения или изменения настройки блокируют текущий поток исполнения до окончания выполнения этих операций |
Описание свойств
allowedDataSources : DataSources
Содержит источники данных, с помощью которых разрешено определять местоположение устройства.
Методы доступа:
- DataSources allowedDataSources() const
- void setAllowedDataSources(DataSources dataSources)
Сигнал уведомления:
- void allowedDataSourcesChanged()
gpsAvailable : const bool
Истинно, если устройство имеет модуль GPS и поддерживает данный способ позиционирования.
Методы доступа:
- bool gpsAvailable() const
gpsEnabled : bool
Истинно, если в настоящий момент на устройстве включено позиционирование с помощью GPS.
Если значением свойства является true и позиционирование включено на глобальном уровне (согласно значению свойства locationEnabled), тогда поставщик услуг GPS будет предоставлять клиентским приложениям обновления данных геопозиционирования.
Если значением свойства является true, но позиционирование отключено на глобальном уровне (согласно значению свойства locationEnabled), тогда поставщик услуг GPS НЕ БУДЕТ предоставлять обновления данных геопозиционирования, модуль GPS будет отключён. Т.е. поведение будет аналогично тому, как если бы GPS-позиционирование было отключено.
Внимание! Для того, чтобы корректно включить GPS в MDM-режиме, нужно сначала отключить режим полёта командой setGpsFlightMode(false), потом включить GPS командой setGpsEnabled(enable). Кроме того, перед использованием setGpsEnabled и setGpsFlightMode нужно проверять флаги статуса GPS при помощи функций gpsEnabled и gpsFlightMode, чтобы корректно передать значения в функции gpsEnabled и gpsFlightMode.
Примечание: путём изменения данного свойства нельзя предотвратить изменение этой настройки через пользовательский интерфейс системных настроек. Чтобы запретить пользователю менять значение этой настройки, клиентское приложение MDM должно также применить соответствующую политику безопасности средствами libsailfishpolicy API.
Методы доступа:
- bool gpsEnabled() const
- void setGpsEnabled(bool value)
Сигнал уведомления:
- void gpsEnabledChanged()
locationEnabled : bool
Истинно, если в настоящий момент на устройстве включено позиционирование.
Если позиционирование включено, и при этом разрешён по крайней мере один способ позиционирования (например, с помощью GPS или aGPS), тогда клиентские приложения с соответствующими привилегиями смогут получать обновления данных геопозиционирования.
Примечание: путём изменения данного свойства нельзя предотвратить изменение этой настройки через пользовательский интерфейс системных настроек. Чтобы запретить пользователю менять значение этой настройки, клиентское приложение MDM должно также применить соответствующую политику безопасности средствами libsailfishpolicy API.
Методы доступа:
- bool locationEnabled() const
- void setLocationEnabled(bool value)
Сигнал уведомления:
- void locationEnabledChanged()
locationMode : LocationMode
Содержит значение перечисления LocationMode, в котором определены конкретные способы определения местоположения устройства.
Следует обратить внимание, что каждый способ по своей сути является краткой формой выбора нескольких настроек. Каждая из этих настроек может быть изменена индивидуально с помощью других методов данного класса. Дополнительную информацию можно прочитать в описании перечисления LocationMode.
Также следует обратить внимание, что данная операция может быть не завершена, если не были приняты соответствующие условия использования, или если поставщики сетевого местоположения не доступны. В этом случае будут применены ближайшие подходящие настройки для заданного свойства locationMode.
Методы доступа:
- LocationMode locationMode() const
- void setLocationMode(LocationMode locationMode)
Сигнал уведомления:
- void locationModeChanged()
Описание методов класса
LocationSettings::LocationSettings(QObject *parent = Q_NULLPTR)
Конструктор по умолчанию для класса LocationSettings.
LocationSettings::LocationSettings(Mode mode, QObject *parent = Q_NULLPTR)
Конструктор по умолчанию для класса LocationSettings.
bool LocationSettings::agpsAgreementAccepted(const QString &agpsProvider) const
Возвращает true, если было принято соглашение об условиях использования с поставщиком aGPS, имя которого совпадает с заданным именем agpsProvider.
См. также setAgpsAgreementAccepted().
bool LocationSettings::agpsAvailable(const QString &agpsProvider) const
Возвращает true, если у устройства есть провайдер aGPS, имя которого совпадает с заданным именем agpsProvider.
Поставщиком Agps может быть, например, "here" или "mls" (Mozilla Location Services).
bool LocationSettings::agpsEnabled(const QString &agpsProvider) const
Возвращает true, если включён провайдер aGPS, имя которого совпадает с заданным именем agpsProvider.
Если провайдер aGPS включён и позиционирование включено глобально (как сообщает locationEnabled()) то провайдер aGPS будет предоставлять клиентам обновления местоположения.
Следует обратить внимание, что если провайдер aGPS включён, но позиционирование глобально отключено (как сообщает locationEnabled()), то провайдер aGPS НЕ будет предоставлять никаких обновлений местоположения и не будет пытаться связаться с серверными службами aGPS, как будто сам отключён.
См. также setAgpsEnabled().
void LocationSettings::allowDataSource(DataSource dataSource)
Позволяет клиенту разрешить устройству использовать указанный dataSource для определения своего местоположения.
QStringList LocationSettings::availableAgpsProviders() const
Возвращает имена известных поставщиков сетевых расположений и помощников-поставщиков локального расположения устройства, которые доступны на устройстве.
void LocationSettings::disallowDataSource(DataSource dataSource)
Позволяет клиенту запретить устройству использовать указанный dataSource для определения своего местоположения.
bool LocationSettings::gpsFlightMode() const
Возвращает true, если модуль GPS в настоящий момент отключён из-за включённого режима полёта.
Следует обратить внимание, что если модуль GPS отключён из-за включённого режима полёта, поставщик услуг GPS НЕ БУДЕТ предоставлять обновления данных геопозиционирования.
См. также setGpsFlightMode().
[signal] void LocationSettings::gpsFlightModeChanged()
Сигнал испускается при отключении модуля GPS путём включением режима полёта, включении модуля GPS путём отключением режима полёта или же после принудительного разрешения использования GPS даже при включённом режиме полёта.
void LocationSettings::setAgpsAgreementAccepted(const QString &agpsProvider, bool value)
Позволяет клиенту принять или отозвать соглашение об условиях использования с поставщиком aGPS, имя которого совпадает с заданным именем agpsProvider в зависимости от заданного значения value.
См. также agpsAgreementAccepted().
void LocationSettings::setAgpsEnabled(const QString &agpsProvider, bool value)
Позволяет клиенту включать или отключать поставщика aGPS, имя которого совпадает с заданным именем agpsProvider, в зависимости от заданной возможности value.
Следует обратить внимание, что этот метод позволяет клиенту MDM включать или отключать провайдеров aGPS, но не предотвращает изменение этих настроек, например, через настройки UI. Чтобы запретить пользователю менять значение этой настройки, клиентское приложение MDM должно также применить соответствующую политику безопасности средствами libsailfishpolicy API.
См. также agpsEnabled().
void LocationSettings::setGpsFlightMode(bool value)
Позволяет клиентскому приложению в зависимости от значения параметра value, соответственно, либо включить, либо отключить режим полёта для модуля GPS.
Следует обратить внимание, что с помощью этого метода клиентское приложение MDM может задать режим полёта для модуля GPS. Однако с его помощью нельзя предотвратить изменение этой настройки через пользовательский интерфейс системных настроек. Чтобы запретить пользователю менять значение этой настройки, клиентское приложение MDM должно также применить соответствующую политику безопасности средствами libsailfishpolicy API.
См. также gpsFlightMode().