QGeoSatelliteInfoSource 类
QGeoSatelliteInfoSource 类是一个用于分发卫星信息更新的抽象基类。更多...
头文件 | #include <QGeoSatelliteInfoSource> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Positioning) target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
qmake | QT += positioning |
继承自 | QObject |
继承 |
公共类型
枚举 | Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError } |
属性
- minimumUpdateInterval : const int
- updateInterval : int
公共函数
virtual | ~QGeoSatelliteInfoSource() |
(since 6.2) virtual QVariant | backendProperty(const QString &name) const |
QBindable<int> | bindableUpdateInterval() |
virtual QGeoSatelliteInfoSource::Error | error() const = 0 |
virtual int | minimumUpdateInterval() const = 0 |
(since 6.2) virtual bool | setBackendProperty(const QString &name, const QVariant &value) |
virtual void | setUpdateInterval(int msec) |
QString | sourceName() const |
int | updateInterval() const |
公共槽
virtual void | requestUpdate(int timeout = 0) = 0 |
virtual void | startUpdates() = 0 |
virtual void | stopUpdates() = 0 |
信号
void | errorOccurred(QGeoSatelliteInfoSource::Error satelliteError) |
void | satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &satellites) |
void | satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &satellites) |
静态公共成员
QStringList | availableSources() |
QGeoSatelliteInfoSource * | createDefaultSource(QObject *parent) |
(since Qt 5.14) QGeoSatelliteInfoSource * | createDefaultSource(const QVariantMap ¶meters, QObject *parent) |
QGeoSatelliteInfoSource * | createSource(const QString &sourceName, QObject *parent) |
(since Qt 5.14) QGeoSatelliteInfoSource * | createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent) |
详细描述
静态函数QGeoSatelliteInfoSource::createDefaultSource()用于创建适用于平台的默认卫星数据源,如果可用。否则,将检查可用的QGeoPositionInfoSourceFactory插件,看是否有可用的卫星数据源。
调用startUpdates()和stopUpdates()以启动和停止定期更新,或调用requestUpdate()以请求单次更新。当有更新可用时,将发出satellitesInViewUpdated()和/或satellitesInUseUpdated()。
如果需要定期卫星更新,可以使用setUpdateInterval()指定这些更新应该发出的频率。如果不指定间隔,则只需在更新可用时提供更新。例如
// Emit updates every 10 seconds if available QGeoSatelliteInfoSource *source = QGeoSatelliteInfoSource::createDefaultSource(0); if (source) source->setUpdateInterval(10000);
要移除以前设置的更新间隔,请使用值为0的setUpdateInterval()。
注意:卫星源可能对更新间隔有最小值要求,这由minimumUpdateInterval()返回。
注意:要从Android服务中使用此类,请参阅Qt在Android中的定位。
成员类型文档
枚举QGeoSatelliteInfoSource::Error
错误枚举表示可能发生的错误。
常量 | 值 | 描述 |
---|---|---|
QGeoSatelliteInfoSource::AccessError | 0 | 由于应用程序缺少必需的权限,设置与卫星后端建立连接失败。 |
QGeoSatelliteInfoSource::ClosedError | 1 | 卫星后端关闭了连接,例如当用户关闭位置服务时。此对象变得无效,应该被删除。稍后可以通过调用createDefaultSource()创建新的卫星源。 |
QGeoSatelliteInfoSource::NoError | 2 | 未发生错误。 |
QGeoSatelliteInfoSource::UnknownSourceError | -1 | 发生了不可识别的错误。 |
QGeoSatelliteInfoSource::UpdateTimeoutError | 3 | 在指定的超时时间内无法检索当前的卫星信息。 |
属性文档
[read-only]
minimumUpdateInterval : const int
这个属性包含检索卫星更新所需的最小时间(以毫秒为单位)。
这是由setUpdateInterval()和requestUpdate()接受的最低值。
访问函数
virtual int | minimumUpdateInterval() const = 0 |
[bindable]
updateInterval : int
注意:此属性支持QProperty绑定。
此属性包含每个更新之间请求的间隔(以毫秒为单位)。
如果未设置更新间隔(或设置为0),则源将根据需要提供更新。
如果设置了更新间隔,源将尽可能地以请求间隔提供更新。如果请求间隔小于最小更新间隔(),则使用最小间隔。
更新间隔的改变将尽可能快地发生,但是不同的实现中改变所需的时间可能不同。是否将前一个间隔经过的时间计为新的间隔的一部分也取决于实现。
此属性的默认值为0。
注意:子类实现必须调用基类的setUpdateInterval()函数,以确保updateInterval()返回正确的值。
成员函数文档
[虚函数 noexcept]
QGeoSatelliteInfoSource::~QGeoSatelliteInfoSource()
销毁卫星源。
[静态]
QStringList QGeoSatelliteInfoSource::availableSources()
返回可用源插件的列表,包括如果有的话默认系统后端。
[虚函数, 自6.2版本起]
QVariant QGeoSatelliteInfoSource::backendProperty(const QString &name) const
如果有,返回名为name的特定于后端属性值;否则返回的值无效。
此函数自Qt 6.2版本起被引入。
另请参阅setBackendProperty。
[静态]
QGeoSatelliteInfoSource *QGeoSatelliteInfoSource::createDefaultSource(QObject *parent)
创建并返回一个具有指定parent的源,该源从系统默认的卫星更新信息源读取,或读取最高优先级的可用插件。
如果没有默认的卫星源,找不到有效的插件或用户没有权限访问卫星数据,则返回nullptr
。
[静态,自Qt 5.14版本起]
QGeoSatelliteInfoSource *QGeoSatelliteInfoSource::createDefaultSource(const QVariantMap ¶meters, QObject *parent)
创建并返回一个具有给定parent且从系统默认的卫星数据源读取,或读取具有最高可用优先级的插件的卫星源。
如果没有默认的卫星源,找不到有效的插件或用户没有权限访问卫星信息,则返回nullptr
。
此方法将parameters传递到工厂以配置源。
此函数自Qt 5.14版本起被引入。
[静态]
QGeoSatelliteInfoSource *QGeoSatelliteInfoSource::createSource(const QString &sourceName, QObject *parent)
通过加载名为sourceName的插件创建并返回指定parent的源。
如果找不到插件,则返回nullptr
。
[静态,从 Qt 5.14 以来]
QGeoSatelliteInfoSource *QGeoSatelliteInfoSource::createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent)
通过加载名为 sourceName 的插件,创建并返回一个具有给定 parent 的卫星源。
如果找不到插件,则返回nullptr
。
此方法将parameters传递到工厂以配置源。
此函数自Qt 5.14版本起被引入。
[纯虚函数]
QGeoSatelliteInfoSource::Error QGeoSatelliteInfoSource::error() const
返回最后发生的错误。
注意:从 Qt6 开始,在调用 startUpdates() 或 requestUpdate() 时,总是重置最后错误。
[信号]
void QGeoSatelliteInfoSource::errorOccurred(QGeoSatelliteInfoSource::Error satelliteError)
错误发生时会发出此信号。参数 satelliteError 描述了发生错误的类型。
[纯虚槽]
void QGeoSatelliteInfoSource::requestUpdate(int timeout = 0)
尝试获取当前的卫星信息并发出带有该信息的 satellitesInViewUpdated() 和 satellitesInUseUpdated() 信号。如果在给定的 timeout (以毫秒为单位)内找不到当前卫星信息,或者如果在 timeout 小于 minimumUpdateInterval() 返回的值时,将发出带有 UpdateTimeoutError 的 errorOccurred() 信号。
如果超时为零,则超时默认为适合源的可接受超时时间段。
如果有其他更新请求正在进行,则此操作不执行任何操作。但是,即使已经调用 startUpdates() 并且正在执行常规更新,也可以调用此方法。
注意:从 Qt6 开始,在请求卫星信息之前,此方法总是将最后错误重置为 NoError。
注意:要了解如何从 Android 服务中使用此方法,请参阅 Android 上的 Qt 位置。
[信号]
void QGeoSatelliteInfoSource::satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &satellites)
当调用 startUpdates() 或 requestUpdate() 时,如果在当前正在使用的卫星数量上有更新的情况,则发出此信号。
这些是用于获取“固定”的卫星——即用于确定当前位置的卫星。
参数 satellites 包含当前正在使用的卫星。
[信号]
void QGeoSatelliteInfoSource::satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &satellites)
当调用 startUpdates() 或 requestUpdate() 时,如果在当前视野中的卫星上有更新的情况,则发出此信号。
卫星参数包含 currently in view 中当前可见的卫星。
[虚拟,自6.2起]
bool QGeoSatelliteInfoSource::setBackendProperty(const QString &name, const QVariant &value)
将名为 name 的后端特定属性设置为 value。成功时返回 true
,否则返回 false
。后端特定属性可以用于在运行时配置卫星信息子系统行为。
此函数自Qt 6.2版本起被引入。
另请参阅backendProperty。
QString QGeoSatelliteInfoSource::sourceName() const
返回正在使用的卫星源实现的唯一名称。
此名称可以传递给 createSource() 以创建特定卫星源实现的实例。
[纯虚函数]
void QGeoSatelliteInfoSource::startUpdates()
以固定间隔开始发出更新。只要可用,就会提供新的卫星信息。
如果无法检索卫星信息或已发生超时等其他形式,则可能发出带有空参数列表的 satellitesInViewUpdated() 和 satellitesInUseUpdated() 信号。
注意:自 Qt6 以来,此方法总是在启动更新前将 最后的错误重置为 NoError。
注意:要了解如何从 Android 服务中使用此方法,请参阅 Android 上的 Qt 位置。
另请参阅satellitesInViewUpdated() 和 satellitesInUseUpdated。
[纯虚函数]
void QGeoSatelliteInfoSource::stopUpdates()
停止以固定间隔发出更新。
© 2024 The Qt Company Ltd. 本文档中的贡献是各自所有者的版权。所提供的文档是根据自由软件基金会发布的GNU自由文档许可第1.3版许可的。Qt和相应的标志是The Qt Company Ltd.在芬兰和其他国家的商标。所有其他商标均为其各自所有者的财产。