次の方法で共有


GNSS_GEOFENCE_STATE列挙 (gnssdriver.h)

GNSS_GEOFENCE_STATEは、1 つのジオフェンスのさまざまな状態を列挙します。

構文

typedef enum {
  GNSS_GeofenceState_Unknown,
  GNSS_GeofenceState_Entered,
  GNSS_GeofenceState_Exited
} GNSS_GEOFENCE_STATE;

定数

 
GNSS_GeofenceState_Unknown
ジオフェンスの状態は不明です。
GNSS_GeofenceState_Entered
ジオフェンスが入力されました。
GNSS_GeofenceState_Exited
ジオフェンスが終了しました。

注釈

次のビットマスクは、ジオフェンスの状態変更アラートを要求するために HLOS によって使用されます。

#define GNSS_GEOFENCEALERTTYPE_ENTRY  GNSS_GeofenceState_Entered    // Enter Geofence
#define GNSS_GEOFENCEALERTTYPE_EXIT   GNSS_GeofenceState_Exited     // Exit Geofence

ジオフェンスの以前の状態が不明または終了し、デバイスがジオフェンスに入ると、エントリ アラートが発生します。

ジオフェンスの以前の状態が入力され、デバイスがジオフェンスを終了すると、終了アラートが発生します。 ジオフェンスの以前の状態が不明で、デバイスが現在ジオフェンスの外部にある場合、終了アラートは生成されません。

場所プラットフォームは、フェンスの以前の既知の状態がフェンス内にある場合にのみ、終了トリガーをアプリに送信します。 これは、ジオフェンス構成での終了イベントのチャットを回避するための設計上の決定です (たとえば、自宅から出口フェンスを構成するユーザーが、既に自宅の外にいるときに通知を構成する場合は、自宅外であることを通知する必要があると想定しない場合)。 それでも、場所プラットフォームは GNSS ドライバーが終了イベントを送信する場所を処理できますが、GNSS アダプターと GNSS ドライバーの間の相互作用が非常に詳細になるため、お勧めしません。 ユーザーがジオフェンスに入る可能性がジオフェンスの外部にいるユーザーよりもはるかに小さいことを考えると、この動作により、GNSS ドライバーと GNSS アダプターの間で必要な操作が減ります。 たとえば、100 個のジオフェンスが GNSS ドライバーにプッシュされ、ユーザーがそれらのすべて外にいた場合、この動作がなければ、 は GNSS アダプター 100 の終了通知に送信する必要があります。 エントリ イベントでこのようなことが発生する可能性は非常に小さいです。

ジオフェンス状態の遷移と関連するアラートを次に示します。 わかりやすくするために、ヒステリシスとジオフェンス境界条件が暗黙的に指定されます。

GNSS ジオフェンスの状態図。

この状態図の主な側面は次のとおりです。

  • GNSS_GeofenceState_Unknown から状態への移行時にアラートGNSS_GeofenceState_Exited発生しません。

  • GNSS エンジンがジオフェンスをまったく追跡できない場合は、ジオフェンスごとに 1 つのアラートではなく、1 つのグローバル追跡状態アラートを発生させる必要があります。 GNSS エンジンは、GNSS_GeofenceState_Unknown状態に移行するのではなく、各フェンスの最後の認識状態を維持できるため、再び追跡できるようになると、新しい入退出検出に基づいて必要なジオフェンス アラートを発生させることができます。

    ただし、この最後の既知の状態を維持する必要はありません。ただし、GNSS ドライバーがgnss_geofences_tracking_statusを FAILURE としてイベントを発生すると、HLOS の場所プラットフォームでジオフェンスの追跡が開始されるためです。 この間、ジオフェンスを再び追跡できる場合、GNSS エンジンは電力最適化された方法で引き続きチェックする必要があります。 IHV では、最適化を使用して、低電力でこの検出を行うことができます。 最適化の一般的な手法は次のとおりです。

    • プログレッシブ バックオフ

    • アクセラレータ データや携帯電話/WiFi の変更通知などのデバイスの動きを示す低コストの信号を待機しています。

    • パブリック Geolocation WinRT API を使用して HLOS から低精度の距離追跡セッションを要求する。

    • 衛星信号の低電力チェック。

    GNSS エンジンが再びジオフェンスを追跡できる場合は、gnss_geofence_tracking_statusを SUCCESS として GNSS アダプター/HLOS に設定して通信します

    GNSS アダプターは、GNSS_ResetGeofenceTrackingコマンドを発行し、各ジオフェンスの現在の入り口/終了基準を使用して、現在アクティブなジオフェンスを再追加します。 これは、追跡するジオフェンスのセットが変更された場合、またはジオフェンスの状態が変更された場合に行う必要があります。

要件

要件
Header gnssdriver.h