Ein Geofence definiert eine oder mehrere Kontextbedingungen, auf die Ihre App reagieren kann. Wenn sich der Status eines Zauns ändert, erhält Ihre App einen Rückruf.
Es gibt zwei Arten von Begrenzungen: primitive Begrenzungen, die den grundlegenden Satz von Kontextsignalen darstellen, und Kombinationsbegrenzungen, die mehrere primitive Begrenzungen mithilfe von booleschen Operatoren kombinieren. Alle Zäune sind Instanzen von AwarenessFence
.
Einen einfachen Zaun erstellen
Primitive Begrenzungen, die die grundlegenden Kontextsignale darstellen, sind im Paket awareness.fence
definiert. Im folgenden Beispiel wird die Erstellung einer einfachen Begrenzung gezeigt, die TRUE
ist, wenn die erkannte Aktivität des Nutzers WALKING
ist, und FALSE
andernfalls:
AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);
Im vorherigen Beispiel wurde DetectedActivityFence
durch einen Aufruf von during
erstellt. Das bedeutet, dass sich der Zaun im Status TRUE
befindet, wenn sich der Nutzer in WALKING
befindet.
Auf Übergänge reagieren
Jeder primitive Zauntyp, mit Ausnahme von TimeFence
, kann auch kurzzeitig ausgelöst werden, wenn der Kontextstatus wechselt. Sie können beispielsweise festlegen, dass ein DetectedActivityFence
kurzzeitig ausgelöst wird, wenn ein Nutzer eine Aktivität starting
oder stopping
ausführt. Übergangsabsperrungen befinden sich einige Sekunden lang im Status TRUE
, bevor sie wieder FALSE
werden.
Kombinationszaun erstellen
Kombinationszäune kombinieren mehrere primitive Zauntypen mithilfe von booleschen Operatoren. Im folgenden Beispiel wird ein Kombinationszaun erstellt, der aktiviert wird, wenn der Nutzer geht und die Kopfhörer angeschlossen sind:
// Create the primitive fences.
AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);
AwarenessFence headphoneFence = HeadphoneFence.during(HeadphoneState.PLUGGED_IN);
// Create a combination fence to AND primitive fences.
AwarenessFence walkingWithHeadphones = AwarenessFence.and(
walkingFence, headphoneFence
);
Verschachtelte Bäume von AND
, OR
und NOT
sind gültig. Daher ist jede boolesche Kombination von Zäunen möglich. Im folgenden Beispiel wird ein Zaun ausgelöst, wenn sich ein Nutzer mehr als 100 Meter vom aktuellen Standort entfernt oder seit der aktuellen Uhrzeit mehr als eine Stunde vergangen ist.
double currentLocationLat; // current location latitude
double currentLocationLng; // current location longitude
long nowMillis = System.currentTimeMillis();
long oneHourMillis = 1L * 60L * 60L * 1000L;
AwarenessFence orExample = AwarenessFence.or(
AwarenessFence.not(LocationFence.in(
currentLocationLat,
currentLocationLng,
100.0,
100.0,
0L)),
TimeFence.inInterval(nowMillis + oneHourMillis, Long.MAX_VALUE));
Nächster Schritt: Ein Grundstück registrieren