QGeoAreaMonitorSource Class
QGeoAreaMonitorSource クラスは、指定された座標セットの近接変化の検出を可能にします。詳細...
Header: | #include <QGeoAreaMonitorSource> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Positioning) target_link_libraries(mytarget PRIVATE Qt6::Positioning) |
qmake: | QT += positioning |
Inherits: | QObject |
パブリック・タイプ
enum | AreaMonitorFeature { PersistentAreaMonitorFeature, AnyAreaMonitorFeature } |
flags | AreaMonitorFeatures |
enum | Error { AccessError, InsufficientPositionInfo, NoError, UnknownSourceError } |
パブリック関数
QGeoAreaMonitorSource(QObject *parent) | |
virtual | ~QGeoAreaMonitorSource() |
virtual QList<QGeoAreaMonitorInfo> | activeMonitors() const = 0 |
virtual QList<QGeoAreaMonitorInfo> | activeMonitors(const QGeoShape &lookupArea) const = 0 |
(since 6.2) virtual QVariant | backendProperty(const QString &name) const |
virtual QGeoAreaMonitorSource::Error | error() const = 0 |
virtual QGeoPositionInfoSource * | positionInfoSource() const |
virtual bool | requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal) = 0 |
(since 6.2) virtual bool | setBackendProperty(const QString &name, const QVariant &value) |
virtual void | setPositionInfoSource(QGeoPositionInfoSource *newSource) |
QString | sourceName() const |
virtual bool | startMonitoring(const QGeoAreaMonitorInfo &monitor) = 0 |
virtual bool | stopMonitoring(const QGeoAreaMonitorInfo &monitor) = 0 |
virtual QGeoAreaMonitorSource::AreaMonitorFeatures | supportedAreaMonitorFeatures() const = 0 |
シグナル
void | areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update) |
void | areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update) |
void | errorOccurred(QGeoAreaMonitorSource::Error areaMonitoringError) |
void | monitorExpired(const QGeoAreaMonitorInfo &monitor) |
静的パブリックメンバー
QStringList | availableSources() |
QGeoAreaMonitorSource * | createDefaultSource(QObject *parent) |
QGeoAreaMonitorSource * | createSource(const QString &sourceName, QObject *parent) |
詳細説明
QGeoAreaMonitorSourceは、現在位置が指定されたエリアの範囲内にある時、または範囲外に移動した時にシグナルを発信します。各エリアはQGeoAreaMonitorInfo オブジェクトによって指定されます。例えば
public: MyClass() : QObject() { QGeoAreaMonitorSource *monitor = QGeoAreaMonitorSource::createDefaultSource(this); if (monitor) { connect(monitor, SIGNAL(areaEntered(QGeoAreaMonitorInfo,QGeoPositionInfo)), this, SLOT(areaEntered(QGeoAreaMonitorInfo,QGeoPositionInfo))); connect(monitor, SIGNAL(areaExited(QGeoAreaMonitorInfo,QGeoPositionInfo)), this, SLOT(areaExited(QGeoAreaMonitorInfo,QGeoPositionInfo))); QGeoAreaMonitorInfo bigBen("Big Ben"); QGeoCoordinate position(51.50104, -0.124632); bigBen.setArea(QGeoCircle(position, 100)); monitor->startMonitoring(bigBen); } else { qDebug() << "Could not create default area monitor"; } } public Q_SLOTS: void areaEntered(const QGeoAreaMonitorInfo &mon, const QGeoPositionInfo &update) { Q_UNUSED(mon); qDebug() << "Now within 100 meters, current position is" << update.coordinate(); } void areaExited(const QGeoAreaMonitorInfo &mon, const QGeoPositionInfo &update) { Q_UNUSED(mon); qDebug() << "No longer within 100 meters, current position is" << update.coordinate(); }
QGeoAreaMonitorSource
はシングルトンパターンに従う。同じ ()を持つクラスの各インスタンスは、同じエリア・モニタリング・バックエンドを共有する。新しい オブジェクトが () または () 経由で追加された場合、このクラスの別のインスタンスによって取得することができます(同じエリア・モニタ・プロバイダ・プラグインから取得されていることが条件)。同じシングルトンパターンが、このクラスで使用される インスタンスにも適用されます。次のコード・スニペットは、この動作を強調しています:sourceName QGeoAreaMonitorInfo startMonitoring requestUpdate QGeoPositionInfoSource
QGeoAreaMonitorSource *s1 = QGeoAreaMonitorSource::createSource("blah", this); QGeoAreaMonitorSource *s2 = QGeoAreaMonitorSource::createSource("blah", this); QVERIFY(s1->positionInfoSource() == s2->positionInfoSource);
メンバ型ドキュメント
enum QGeoAreaMonitorSource::AreaMonitorFeature
flags QGeoAreaMonitorSource::AreaMonitorFeatures
エリアモニタリング機能のタイプを定義します。
定数 | 値 | 説明 |
---|---|---|
QGeoAreaMonitorSource::PersistentAreaMonitorFeature | 0x00000001 | QGeoAreaMonitorInfo インスタンスを永続化できます。永続的なモニターは、モニターを管理するアプリケーションが実行されていなくても、アクティブな状態を維持します。 |
QGeoAreaMonitorSource::AnyAreaMonitorFeature | 0xffffffff | すべての可能なエリアモニター機能にマッチします。 |
AreaMonitorFeatures型は、QFlags<AreaMonitorFeature>のtypedefです。AreaMonitorFeature値のORの組み合わせを格納します。
enum QGeoAreaMonitorSource::Error
測位メソッドのタイプを定義します。
Error 列挙は、発生する可能性のあるエラーを表します。
定数 | 値 | 説明 |
---|---|---|
QGeoAreaMonitorSource::AccessError | 0 | アプリケーションに必要な権限がないため、リモートエリアモニタリングバックエンドへの接続セットアップに失敗しました。 |
QGeoAreaMonitorSource::InsufficientPositionInfo | 1 | エリアモニタリングソースがロケーションフィックスを取得できなかったか、フィックスの精度が有効なエリアモニタリングを提供するのに十分ではありません。 |
QGeoAreaMonitorSource::NoError | 3 | エラーは発生していません。 |
QGeoAreaMonitorSource::UnknownSourceError | 2 | 不明なエラーが発生しました。 |
メンバー関数ドキュメント
[explicit]
QGeoAreaMonitorSource::QGeoAreaMonitorSource(QObject *parent)
与えられたparent でモニターソースを作成します。
[virtual noexcept]
QGeoAreaMonitorSource::~QGeoAreaMonitorSource()
モニターソースを破棄します。
[pure virtual]
QList<QGeoAreaMonitorInfo> QGeoAreaMonitorSource::activeMonitors() const
QGeoAreaMonitorSource オブジェクトが知っているすべてのアクティブモニターのリストを返す。
アクティブなモニターはstartMonitoring() で開始された。アクティブなモニターごとに、ソース・オブジェクトはareaEntered() やareaExited() などの必要なシグナルを発信します。同じアプリケーション内の複数のQGeoAreaMonitorSource インスタンスは、同じアクティブ・モニター・オブジェクトを共有します。
アクティブなQGeoAreaMonitorInfo isPersistent () がない限り、現在のアプリケーションが終了すると、アクティブなQGeoAreaMonitorInfo は停止する。
[pure virtual]
QList<QGeoAreaMonitorInfo> QGeoAreaMonitorSource::activeMonitors(const QGeoShape &lookupArea) const
lookupArea 内に中心を持つQGeoAreaMonitorSource オブジェクトが知っているすべてのアクティブモニターのリストを返します。lookupArea が空の場合、返されるリストは空になります。
アクティブなモニターは、startMonitoring ()を介して開始された。すべてのアクティブ・モニターに対して、ソース・オブジェクトはareaEntered() やareaExited() などの必要なシグナルを発する。同じアプリケーション内の複数のQGeoAreaMonitorSource インスタンスは、同じアクティブ・モニター・オブジェクトを共有します。
アクティブなQGeoAreaMonitorInfo isPersistent () がない限り、現在のアプリケーションが終了すると、アクティブなQGeoAreaMonitorInfo は停止します。
QGeoShapeも参照のこと 。
[signal]
void QGeoAreaMonitorSource::areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
現在の位置が、アクティブなmonitor の外側の位置から、モニター領域内の位置に移動したときに発せられる。
update は新しい位置を保持する。
[signal]
void QGeoAreaMonitorSource::areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update)
現在の位置がアクティブなmonitor 内の位置から監視領域外の位置に移動したときに発せられる。
update が新しい位置を保持する。
[static]
QStringList QGeoAreaMonitorSource::availableSources()
利用可能なモニタープラグインのリストを返します。利用可能な場合は、デフォルトのシステムバックエンドも含みます。
[virtual, since 6.2]
QVariant QGeoAreaMonitorSource::backendProperty(const QString &name) const
バックエンド固有のプロパティname が存在する場合は、その値を返します。そうでない場合、返される値は無効です。
この関数は Qt 6.2 で導入されました。
setBackendProperty()も参照してください 。
[static]
QGeoAreaMonitorSource *QGeoAreaMonitorSource::createDefaultSource(QObject *parent)
与えられたparent を持つモニターソースを作成し、それを返します。
システムに位置監視のサポートがない場合はnullptr
を返します。
[static]
QGeoAreaMonitorSource *QGeoAreaMonitorSource::createSource(const QString &sourceName, QObject *parent)
sourceName という名前のプラグインをロードすることにより、指定されたparent を持つモニタ・ソースを作成し、返します。
プラグインが見つからない場合はnullptr
を返します。
[pure virtual]
QGeoAreaMonitorSource::Error QGeoAreaMonitorSource::error() const
最後に発生したエラーの種類を返します。
注意: Qt6 以降、startMonitoring() またはrequestUpdate() を呼び出すと、最後に発生したエラーは常にリセットされます。
[signal]
void QGeoAreaMonitorSource::errorOccurred(QGeoAreaMonitorSource::Error areaMonitoringError)
このシグナルは、エラーが発生した後に発せられます。areaMonitoringError パラメータには、発生したエラーのタイプが記述されます。
[signal]
void QGeoAreaMonitorSource::monitorExpired(const QGeoAreaMonitorInfo &monitor)
monitor の有効期限が切れたときに発せられる。期限切れの領域モニタは、自動的にactiveMonitors() のリストから削除される。
activeMonitors()も参照 。
[virtual]
QGeoPositionInfoSource *QGeoAreaMonitorSource::positionInfoSource() const
このQGeoAreaMonitorSource オブジェクトが現在使用しているQGeoPositionInfoSource を返します。他のオブジェクトが設定されていない場合、この関数はQGeoPositionInfoSource::createDefaultSource() を返す。
デフォルトのQGeoPositionInfoSource も存在しない場合、この関数はnullptr
を返します。
返されたQGeoPositionInfoSource インスタンスを使用する場合は、それが別のスレッドに存在する可能性があることを考慮する必要があります。
QGeoPositionInfoSource およびsetPositionInfoSource()も参照のこと 。
[pure virtual]
bool QGeoAreaMonitorSource::requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal)
シングルショット領域監視を有効にします。このQGeoAreaMonitorSource インスタンスがsignal を初めて発するまで、monitor のエリア・モニタリングが実行される。シグナルが発信されると、monitor はactiveMonitors() のリストから自動的に削除される。monitor が無効であるか、有効期限が過ぎている場合、この関数はfalse
を返す。
QGeoAreaMonitor singleShotMonitor; QGeoAreaMonitorSource * source = QGeoAreaMonitorSource::createDefaultSource(this); //... bool ret = source->requestUpdate(singleShotMonitor, SIGNAL(areaExited(QGeoAreaMonitor,QGeoPositionInfo)));
上記のsingleShotMonitor
オブジェクトは、areaExited() シグナルが初めて発せられると、更新の送信を停止する。この時点まで、エリアコンテキストに応じて、他のシグナルが0回またはそれ以上発信される可能性がある。
同じモニター・オブジェクトの複数のシグナルの更新を同時に要求することはできない。この関数の最後の呼び出しによって、更新の継続を停止するシグナルが決定される。この段階では、areaEntered ()とareaExited ()シグナルのみを使用してモニタ処理を終了することができる。
エリア・モニタリング・バックエンドがQGeoAreaMonitorSource::PersistentAreaMonitorFeature をサポートしていない場合、QGeoAreaMonitorSource インスタンスに永続的なモニタリングを要求しても失敗する。
startMonitoring() によってmonitor がすでに登録されている場合は、シングルショット動作に変換されます。
注意: Qt6 以降、このメソッドはモニタリングを開始する前に、常に最後のエラーをNoError にリセットします。
startMonitoring() およびstopMonitoring()も参照してください 。
[virtual, since 6.2]
bool QGeoAreaMonitorSource::setBackendProperty(const QString &name, const QVariant &value)
name というバックエンド固有のプロパティをvalue に設定します。成功した場合はtrue
を返し、そうでない場合はfalse
を返します。バックエンド固有のプロパティを使用して、実行時の領域監視サブシステムの動作を設定することができます。
この関数は Qt 6.2 で導入されました。
backendProperty()も参照してください 。
[virtual]
void QGeoAreaMonitorSource::setPositionInfoSource(QGeoPositionInfoSource *newSource)
このQGeoAreaMonitorSource オブジェクトが使用する新しいQGeoPositionInfoSource を設定します。エリアモニタリングバックエンドは、newSource の新しいQObject の親になります。以前のQGeoPositionInfoSource オブジェクトは削除されます。同じsourceName() に基づくすべてのQGeoAreaMonitorSource インスタンスは、同じQGeoPositionInfoSource インスタンスを共有します。
これは、エリア・モニタリング・エンジンが使用する測位システムを操作したい場合に便利です。
QGeoAreaMonitorSourceこのクラスの背後にあるシングルトン・パターンにより、newSource は新しいスレッドに移動される可能性があります。
positionInfoSource()も参照 。
QString QGeoAreaMonitorSource::sourceName() const
使用中の領域モニター・ソース実装の一意の名前を返します。
これは、特定の領域モニタ・ソース実装の新しいインスタンスを作成するためにcreateSource() に渡すことができる名前と同じです。
[pure virtual]
bool QGeoAreaMonitorSource::startMonitoring(const QGeoAreaMonitorInfo &monitor)
monitor の監視を正常に開始できた場合はtrue
を返し、そうでない場合はfalse
を返します。監視を開始できない理由としては、適切なデフォルト位置情報ソースが利用できない一方で、setPositionInfoSource() によって代替のQGeoPositionInfoSource が設定されていないことが考えられる。
monitor がすでにアクティブである場合、既存のモニターオブジェクトは新しいmonitor 参照に置き換えられる。QGeoAreaMonitorInfo インスタンスの識別は、QGeoAreaMonitorInfo::identifier() を介して行われる。したがって、この関数はアクティブなモニターの更新にも使用できる。
monitor に有効期限が過ぎている場合、この関数は偽を返します。すでにrequestUpdate ()を介して登録されているシングルショットモニタに対してこの関数を呼び出すと、モニタは永続的な監視モードに切り替わる。
エリアモニタリングバックエンドがQGeoAreaMonitorSource::PersistentAreaMonitorFeature をサポートしていない場合、QGeoAreaMonitorSource インスタンスに永続的なモニタリングを要求しても失敗します。
注意: Qt6以降、このメソッドは監視を開始する前に、常に最後のエラーをNoError にリセットします。
stopMonitoring()も参照してください 。
[pure virtual]
bool QGeoAreaMonitorSource::stopMonitoring(const QGeoAreaMonitorInfo &monitor)
activeMonitors() のリストからmonitor が正常に削除された場合は true を返し、そうでない場合は false を返します。この動作は、monitor がstartMonitoring() とrequestUpdate() のどちらで登録されたかに依存しない。
[pure virtual]
QGeoAreaMonitorSource::AreaMonitorFeatures QGeoAreaMonitorSource::supportedAreaMonitorFeatures() const
このソースで利用可能なエリア・モニタリング機能を返します。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。