QGeoPositionInfoSource Class

QGeoPositionInfoSource クラスは、位置情報の更新を配信するための抽象ベースクラスです。詳細...

Header: #include <QGeoPositionInfoSource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Positioning)
target_link_libraries(mytarget PRIVATE Qt6::Positioning)
qmake: QT += positioning
Inherits: QObject
Inherited By:

QNmeaPositionInfoSource

パブリックタイプ

enum Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError }
enum PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods }
flags PositioningMethods

プロパティ

パブリック関数

QGeoPositionInfoSource(QObject *parent)
virtual ~QGeoPositionInfoSource()
(since Qt 5.14) virtual QVariant backendProperty(const QString &name) const
QBindable<QGeoPositionInfoSource::PositioningMethods> bindablePreferredPositioningMethods()
QBindable<int> bindableUpdateInterval()
virtual QGeoPositionInfoSource::Error error() const = 0
virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0
virtual int minimumUpdateInterval() const = 0
QGeoPositionInfoSource::PositioningMethods preferredPositioningMethods() const
(since Qt 5.14) virtual bool setBackendProperty(const QString &name, const QVariant &value)
virtual void setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods)
virtual void setUpdateInterval(int msec)
QString sourceName() const
virtual QGeoPositionInfoSource::PositioningMethods supportedPositioningMethods() const = 0
int updateInterval() const

パブリックスロット

virtual void requestUpdate(int timeout = 0) = 0
virtual void startUpdates() = 0
virtual void stopUpdates() = 0

シグナル

void errorOccurred(QGeoPositionInfoSource::Error positioningError)
void positionUpdated(const QGeoPositionInfo &update)
(since Qt 5.12) void supportedPositioningMethodsChanged()

静的パブリックメンバ

QStringList availableSources()
QGeoPositionInfoSource *createDefaultSource(QObject *parent)
(since Qt 5.14) QGeoPositionInfoSource *createDefaultSource(const QVariantMap &parameters, QObject *parent)
QGeoPositionInfoSource *createSource(const QString &sourceName, QObject *parent)
(since Qt 5.14) QGeoPositionInfoSource *createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

詳細説明

静的関数QGeoPositionInfoSource::createDefaultSource() は、プラットフォームに適したデフォルトの位置情報ソースがあれば、それを作成します。そうでない場合、QGeoPositionInfoSource は、QGeoPositionInfoSourceFactory インターフェイスを実装する利用可能なプラグインをチェックします。

QGeoPositionInfoSource サブクラスのユーザーは、requestUpdate() を使用して現在位置を要求したり、startUpdates() やstopUpdates() を使用して定期的な位置更新を開始したり停止したりすることができます。更新が可能になると、positionUpdated() が発行されます。最後の既知の位置には、lastKnownPosition ()でアクセスできる。

定期的な位置更新が必要な場合は、setUpdateInterval() を使用して、更新の間隔を指定できる。間隔が指定されていない場合は、更新があるたびに更新が行われる。例えば

// Emit updates every 10 seconds if available
QGeoPositionInfoSource *source = QGeoPositionInfoSource::createDefaultSource(0);
if (source)
    source->setUpdateInterval(10000);

以前に設定した更新間隔を削除するには、値 0 を指定してsetUpdateInterval() を呼び出します。

注意 : 位置情報ソースは、minimumUpdateInterval() によって返されるように、更新間隔の最小値要件を持つ場合があります。

注意: Android サービスからこのクラスを使用するには、Android での Qt Positioning を参照してください。

メンバ型ドキュメント

enum QGeoPositionInfoSource::Error

Error 列挙型は、発生する可能性のあるエラーを表します。

定数説明
QGeoPositionInfoSource::AccessError0アプリケーションに必要な権限がないため、リモートポジショニングバックエンドへの接続セットアップに失敗しました。
QGeoPositionInfoSource::ClosedError1リモートポジショニングバックエンドが接続を閉じました。これは、ユーザーがロケーションサービスをオフに切り替えている場合などに発生します。位置情報サービスが再度有効になると、すぐに通常の更新が再開されます。
QGeoPositionInfoSource::NoError3エラーは発生していません。
QGeoPositionInfoSource::UnknownSourceError2不明なエラーが発生しました。
QGeoPositionInfoSource::UpdateTimeoutError (since Qt 6.2)4requestUpdate()が呼び出された場合、このエラーは、指定されたタイムアウト時間内に現在位置を取得できなかったことを示す。startUpdates() が呼び出された場合、このエラーは、このQGeoPositionInfoSource サブクラスが、これ以上定期的な更新を提供できないと判断したことを示す。後者の場合、定期的な更新が再開されるまで、エラーは再発行されない。

enum QGeoPositionInfoSource::PositioningMethod
flags QGeoPositionInfoSource::PositioningMethods 位置決めメソッドの種類を定義する。

測位方法の種類を定義します。

定数説明
QGeoPositionInfoSource::NoPositioningMethods0x00000000測位方法のいずれでもない。
QGeoPositionInfoSource::SatellitePositioningMethods0x000000ffGPSやGLONASSなどの衛星測位方式。
QGeoPositionInfoSource::NonSatellitePositioningMethods0xffffff003GPPセル識別子やWiFiベースの測位など、その他の測位方法。
QGeoPositionInfoSource::AllPositioningMethods0xffffffff利用可能になり次第、衛星測位方式。それ以外の非衛星ベースの測位方法。

PositioningMethods型はQFlags<PositioningMethod>のtypedefである。PositioningMethodsの値のORの組み合わせを格納する。

プロパティの説明

[read-only] minimumUpdateInterval : const int

このプロパティは、位置の更新を取得するために必要な最小時間(ミリ秒単位)を保持します。

これはsetUpdateInterval() とrequestUpdate() が受け付ける最小値である。

アクセス関数:

virtual int minimumUpdateInterval() const = 0

[bindable] preferredPositioningMethods : PositioningMethods

注: このプロパティは、QProperty バインディングをサポートする。

このソースの優先位置決め方法を設定します。

新しいメソッドに、ソースでサポートされていないメソッドが含まれている場合、サポートされていないメソッドは無視されます。

新しいメソッドに、ソースが使用可能またはサポートするメソッドが 1 つも含まれていない場合、優先メソッドは、ソースが使用可能なメソッドのセットに設定されます。ソースに使用可能なメソッドがない場合 (そのソースの Location サービスがオフになっている、または Location サービスを提供していないなど)、渡されたメソッドはそのまま受け入れられます。

このプロパティの既定値はNoPositioningMethods です。

注意: サブクラスの実装では、preferredPositioningMethods() が正しい値を返すように、setPreferredPositioningMethods() の基本実装を呼び出す必要があります。

supportedPositioningMethods()も参照してください

[read-only] sourceName : const QString

このプロパティは、使用中のポジション・ソース実装の一意の名前を保持します。

これは、特定の位置ソース実装の新しいインスタンスを作成するためにcreateSource() に渡すことができる名前と同じです。

アクセス関数:

QString sourceName() const

[bindable] updateInterval : int

注: このプロパティは、QProperty バインディングをサポートしている。

このプロパティは、各更新間の要求間隔をミリ秒単位で保持する。

更新間隔が設定されていない(または 0 に設定されている)場合、ソースは必要な頻度で更新を提供します。

更新間隔が設定されている場合、ソースは、要求された間隔にできるだけ近い間隔で更新を提供します。要求された間隔がminimumUpdateInterval() よりも短い場合、代わりに最小間隔が使用されます。

更新間隔の変更は実用的な限りすぐに行われますが、変更にかかる時間は実装によって異なる場合があります。前のインターバルからの経過時間を新しいインターバルの一部としてカウントするかどうかも実装に依存する。

このプロパティのデフォルト値は 0 です。

注: サブクラスの実装は、updateInterval() が正しい値を返すように、setUpdateInterval() のベース実装を呼び出す必要があります。

:iOSとmacOSのAPIにはそのような機能がないため、このプロパティを使用して更新頻度を調整することはできません。これらのシステムでは、このパラメータはUpdateTimeoutError を設定し、希望する間隔内に更新が受信されなかった場合にerrorOccurred シグナルをトリガーするためにのみ使用される。

メンバー関数ドキュメント

[explicit] QGeoPositionInfoSource::QGeoPositionInfoSource(QObject *parent)

指定されたparent を持つ位置ソースを作成する。

[virtual noexcept] QGeoPositionInfoSource::~QGeoPositionInfoSource()

ポジション・ソースを破棄します。

[static] QStringList QGeoPositionInfoSource::availableSources()

利用可能なソース・プラグインのリストを返します。これには、現在のプラットフォームのデフォルトのバックエンド・プラグインが含まれます。

[virtual, since Qt 5.14] QVariant QGeoPositionInfoSource::backendProperty(const QString &name) const

name というバックエンド固有のプロパティが存在する場合は、その値を返します。それ以外の場合、返される値は無効です。サポートされているバックエンド固有のプロパティの一覧と説明は、Qt Positioning plugins#Default plugins にあります。

この関数は Qt 5.14 で導入されました。

setBackendPropertyも参照してください

[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(QObject *parent)

システムのデフォルトの位置データソース、または利用可能な優先順位が最も高いプラグインから読み込む、与えられたparent を持つ位置ソースを作成し、返します。

システムにデフォルトの位置ソースがない場合、有効なプラグインが見つからない場合、またはユーザーが現在の位置にアクセスする権限を持っていない場合は、nullptr を返します。

[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createDefaultSource(const QVariantMap &parameters, QObject *parent)

システムのデフォルトの位置データソース、または利用可能な優先順位が最も高いプラグインから読み込む、指定されたparent の位置ソースを作成して返します。

システムにデフォルトの位置ソースがない場合、有効なプラグインが見つからない場合、またはユーザーが現在の位置にアクセスする権限を持っていない場合は、nullptr を返します。

このメソッドは、parameters をファクトリーに渡し、ソースを構成します。

この関数は Qt 5.14 で導入されました。

[static] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, QObject *parent)

sourceName という名前のプラグインをロードすることによって、指定されたparent を持つ位置ソースを作成し、返します。

プラグインが見つからない場合はnullptr を返します。

[static, since Qt 5.14] QGeoPositionInfoSource *QGeoPositionInfoSource::createSource(const QString &sourceName, const QVariantMap &parameters, QObject *parent)

sourceName という名前のプラグインをロードすることによって、与えられたparent を持つ位置ソースを作成し、返します。

プラグインが見つからない場合はnullptr を返します。

このメソッドは、parameters をファクトリーに渡し、ソースを構成します。

この関数は Qt 5.14 で導入されました。

[pure virtual] QGeoPositionInfoSource::Error QGeoPositionInfoSource::error() const

最後に発生したエラーのタイプを返します。

注意: Qt6 以降、startUpdates() またはrequestUpdate() を呼び出すと、最後のエラーは常にリセットされます。

[signal] void QGeoPositionInfoSource::errorOccurred(QGeoPositionInfoSource::Error positioningError)

このシグナルは、エラーが発生した後に発せられます。positioningError パラメータには、発生したエラーのタイプが記述されます。

[pure virtual] QGeoPositionInfo QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const

最後の既知の位置を含む更新情報を返します。

fromSatellitePositioningMethodsOnly が true の場合、衛星測位メソッドから受信した最後の既知の位置を返す。

[signal] void QGeoPositionInfoSource::positionUpdated(const QGeoPositionInfo &update)

startUpdates ()またはrequestUpdate ()が呼び出されると、更新が利用可能になったときにこのシグナルが発せられる。

update の値には、新しい更新の値が格納される。

[pure virtual slot] void QGeoPositionInfoSource::requestUpdate(int timeout = 0)

現在位置の取得を試み、この情報とともにpositionUpdated() を発する。与えられたtimeout (ミリ秒)以内に現在位置が見つからなかった場合、またはtimeoutminimumUpdateInterval ()によって返された値より小さい場合、UpdateTimeoutError を持つerrorOccurred ()シグナルが発せられる。

タイムアウトがゼロの場合、タイムアウトのデフォルトは、ソースに適した妥当なタイムアウト時間になります。

別の更新要求が進行中の場合、これは何もしない。ただし、startUpdates ()がすでに呼び出され、通常の更新が進行中であっても呼び出すことができます。

ソースが複数の測位方法を使用している場合、指定されたタイムアウト時間内に最も正確な測位方法から現在位置を取得しようとします。

注意: Qt6 以降、このメソッドは、位置を要求する前に、常に最後のエラーをNoError にリセットします。

注意: Android サービスからこのメソッドを使用する方法については、Android の Qt Positioning を参照してください。

[virtual, since Qt 5.14] bool QGeoPositionInfoSource::setBackendProperty(const QString &name, const QVariant &value)

name というバックエンド固有のプロパティをvalue に設定します。成功した場合はtrue を、そうでない場合はfalse を返します。バックエンド固有のプロパティを使用すると、実行時にポジショニング・サブシステムの動作を設定できます。サポートされているバックエンド固有のプロパティは、Qt Positioning plugins#Default plugins にリストされ、説明されています。

この関数は Qt 5.14 で導入されました。

backendPropertyも参照してください

[pure virtual slot] void QGeoPositionInfoSource::startUpdates()

setUpdateInterval() で指定された間隔で更新を開始します。

setUpdateInterval() が呼び出されていない場合、ソースは、更新が利用可能になり次第、更新を発行します。

このQGeoPositionInfoSource サブクラスが定期的な更新を提供できないと判断した場合は、UpdateTimeoutErrorerrorOccurred() シグナルが発行されます。これは、衛星の修正が失われた場合や、ハードウェア・エラーが検出された場合に発生する可能性があります。後でデータが利用可能になれば、位置の更新は再開される。定期的な更新が再開されるまで、UpdateTimeoutError のエラーは再発行されません。

注意: Qt6 以降、このメソッドは更新を開始する前に常に最後のエラーをNoError にリセットします。

Note: Android サービスからこのメソッドを使用する方法については、Android の Qt Positioning を参照してください。

iOSでは、バージョン8から、Core Location frameworkは、アプリケーションのInfo.plistに、NSLocationAlwaysUsageDescriptionまたはNSLocationWhenInUseUsageDescriptionというキーと、認証プロンプトに表示する文字列を持つ追加のエントリを必要とします。NSLocationWhenInUseUsageDescriptionキーは、アプリがフォアグラウンドにあるときに位置情報サービスの使用許可を要求するときに使用されます。NSLocationAlwaysUsageDescription は、アプリが実行中(フォアグラウンドとバックグラウンドの両方)であればいつでも位置情報サービスの使用許可を要求するときに使用される。両方のエントリが定義されている場合、NSLocationWhenInUseUsageDescriptionはフォアグラウンドモードで優先されます。

[pure virtual slot] void QGeoPositionInfoSource::stopUpdates()

定期的な更新を停止します。

[pure virtual] QGeoPositionInfoSource::PositioningMethods QGeoPositionInfoSource::supportedPositioningMethods() const

このソースで使用可能な位置決めメソッドを返します。利用可能とは、この関数を呼び出した時点で使用可能であると定義されます。したがって、位置情報サービスのオフや衛星ベースの位置情報プロバイダーの制限などのユーザー設定は、この関数に反映されます。ステータスが変更されたときのランタイム通知は、supportedPositioningMethodsChanged ()を介して取得できます。

すべてのプラットフォームが異なる測位方法を区別したり、デバイスの現在のユーザー設定を伝達するわけではありません。以下の表は、現在のプラットフォーム状況の概要を示しています:

プラットフォーム概要
アンドロイド位置情報サービスが有効な場合、個々のプロバイダの状態および一般的な位置情報サービ スの状態が把握され、通信される。
GeoClue常にAllPositioningMethods を返すようにハードコーディングされています。
GeoClue2個々のプロバイダは区別できないが、無効な位置情報サービスは反映される。
iOS常にAllPositioningMethods を返すようにハードロックされています。
macOS常にAllPositioningMethods を返すようにハードロックされています。
Windows (UWP)個々のプロバイダーは区別できないが、無効化された位置情報サービスが反映される。

supportedPositioningMethodsChanged() およびsetPreferredPositioningMethods()も参照

[signal, since Qt 5.12] void QGeoPositionInfoSource::supportedPositioningMethodsChanged()

このシグナルは、サポートされている測位方法が変更されたときに発行される。変更の原因としては、ユーザーが位置情報サービスのオン/オフを切り替えたり、位置情報サービスを特定のタイプ(GPSのみなど)に制限したりしたことが考えられます。対応する測位方法の変更は、すべてのプラットフォームで検出できるわけではないことに注意してください。supportedPositioningMethods() は現在のプラットフォームサポートの概要を提供します。

この機能は Qt 5.12 で導入されました。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。