enumerazione GNSS_GEOFENCE_STATE (gnssdriver.h)
GNSS_GEOFENCE_STATE enumera i vari stati di un singolo recinto virtuale.
Sintassi
typedef enum {
GNSS_GeofenceState_Unknown,
GNSS_GeofenceState_Entered,
GNSS_GeofenceState_Exited
} GNSS_GEOFENCE_STATE;
Costanti
GNSS_GeofenceState_Unknown Lo stato del recinto virtuale è sconosciuto. |
GNSS_GeofenceState_Entered Il recinto virtuale è stato immesso. |
GNSS_GeofenceState_Exited Il recinto virtuale è stato chiuso. |
Osservazioni
Le maschera di bit seguenti vengono usate da HLOS per richiedere avvisi di modifica dello stato per i recinti virtuali:
#define GNSS_GEOFENCEALERTTYPE_ENTRY GNSS_GeofenceState_Entered // Enter Geofence
#define GNSS_GEOFENCEALERTTYPE_EXIT GNSS_GeofenceState_Exited // Exit Geofence
Un avviso di ingresso viene generato quando lo stato precedente del recinto virtuale era sconosciuto o chiuso e il dispositivo è ora entrato nel recinto virtuale.
Un avviso di uscita viene generato quando è stato immesso lo stato precedente del recinto virtuale e il dispositivo ha ora chiuso il recinto virtuale. Se lo stato precedente del recinto virtuale era sconosciuto e il dispositivo è attualmente esterno al recinto virtuale, non verrà generato alcun avviso di uscita.
La piattaforma di posizione invia un trigger di uscita solo alle app quando lo stato noto precedente per una recinzione si trova all'interno della recinzione. Si tratta di una decisione di progettazione per evitare la chattiness degli eventi di uscita nella configurazione del recinto virtuale (ad esempio, quando non si prevede che un utente configuri una recinzione di uscita da casa per ricevere una notifica che si trova all'esterno di casa se configura la notifica quando sono già fuori casa). Tuttavia, la piattaforma di posizione potrebbe gestire la posizione in cui il driver GNSS invia eventi di uscita, ma non è consigliabile perché l'interazione tra l'adattatore GNSS e il driver GNSS diventerà molto dettagliato. Dato che le probabilità che l'utente entri in un recinto virtuale siano molto più piccole dell'utente al di fuori di un recinto virtuale, questo comportamento riduce l'interazione necessaria tra il driver GNSS e l'adattatore GNSS. Ad esempio, nel caso di 100 recinti virtuali di cui è stato eseguito il push al driver GNSS e un utente era esterno a tutti, senza questo comportamento sarà necessario inviare all'adattatore GNSS notifiche di uscita 100. La probabilità di un evento simile a questo accade per gli eventi di immissione è molto piccola.
Di seguito è illustrata la transizione dello stato del recinto virtuale e gli avvisi associati. Per semplicità, sono implicite le condizioni di isteresi e limite del recinto virtuale.
Gli aspetti chiave di questo diagramma di stato sono:
Non deve essere generato alcun avviso durante la transizione da GNSS_GeofenceState_Unknown a GNSS_GeofenceState_Exited stato.
Quando il motore GNSS non è in grado di tenere traccia di alcun recinto virtuale, deve essere generato un singolo avviso di stato di rilevamento globale, anziché un avviso per ogni recinto virtuale. Il motore GNSS potrebbe mantenere l'ultimo stato noto per ogni limite anziché passare allo stato di GNSS_GeofenceState_Unknown, in modo che, quando è in grado di tenere traccia di nuovo, gli avvisi del recinto virtuale necessari possono essere generati in base al nuovo rilevamento di ingresso/uscita.
Mantenere questo ultimo stato noto non è attualmente necessario, perché una volta che il driver GNSS genera l'evento con gnss_geofences_tracking_status come FAILURE, la piattaforma di posizione in HLOS inizierà a eseguire il rilevamento dei recinti virtuali. Durante questo periodo, il motore GNSS deve continuare a controllare, in modo ottimizzato per l'alimentazione, se è possibile rilevare nuovamente i recinti virtuali. L'IHV può usare ottimizzazioni per effettuare questo rilevamento a basso consumo. Le tecniche comuni per l'ottimizzazione includono:
Back-off progressivo
In attesa di segnali a basso costo che sono indicativi di movimenti dei dispositivi, ad esempio i dati dell'acceleratore o le notifiche di modifica cellulare/Wi-Fi.
Richiesta di una sessione di rilevamento della distanza a bassa accuratezza da HLOS usando le API WinRT di georilevazione pubblica.
Controlli a basso consumo di energia per il segnale satellite.
Quando il motore GNSS è in grado di tenere traccia di nuovo dei recinti virtuali, comunica così impostando l'gnss_geofence_tracking_status come SUCCESS su scheda GNSS/HLOS
L'adattatore GNSS eseguirà GNSS_ResetGeofenceTracking comandi e aggiungerà nuovamente recinti virtuali attualmente attivi con i criteri di ingresso/uscita correnti di ogni recinto virtuale. Questa operazione deve essere eseguita nel caso in cui il set di recinti virtuali da tenere traccia sia stato modificato o nello stato per qualsiasi recinto virtuale è cambiato.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | gnssdriver.h |