Ein Zaun definiert eine oder mehrere Kontextbedingungen, auf die Ihre Anwendung reagieren kann. Wenn sich der Zaunstatus ändert, erhält Ihre App einen Callback.
Es gibt zwei Arten von Zäunen: einfache Zäune, die die grundlegenden Kontextsignale repräsentieren, und kombinierte Zäune, bei denen mehrere einfache Zäune durch die Verwendung boolescher Operatoren kombiniert werden. Alle Zäune sind Instanzen von AwarenessFence
.
Einfachen Zaun erstellen
Einfache Zäune, die die grundlegenden Kontextsignale darstellen, werden im Paket awareness.fence
definiert. Das folgende Beispiel zeigt die Erstellung eines einfachen Zauns, der TRUE
lautet, wenn die erkannte Aktivität des Nutzers WALKING
ist. Andernfalls gilt FALSE
:
AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);
Im vorherigen Beispiel wurde die DetectedActivityFence
durch einen Aufruf von during
erstellt. Das bedeutet, dass der Zaun im Status TRUE
ist, sobald der Nutzer WALKING
ist.
Auf Übergänge reagieren
Jeder einfache Zauntyp mit Ausnahme von TimeFence
kann kurzzeitig ausgelöst werden, wenn der Kontextzustand übergeht. Sie können beispielsweise eine DetectedActivityFence
festlegen, die kurzzeitig ausgelöst wird, wenn ein Nutzer eine starting
- oder stopping
-Aktivität ist. Übergangszaunen haben einige Sekunden lang den Status TRUE
, bevor sie wieder FALSE
werden.
Kombizaun erstellen
Kombinationszaunen kombinieren mehrere einfache Zauntypen mit booleschen Operatoren. Das folgende Beispiel zeigt einen Kombinationszaun, 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, sodass eine beliebige boolesche Kombination von Zäunen möglich ist. Das folgende Beispiel zeigt einen Zaun, der ausgelöst wird, wenn sich ein Nutzer mehr als 100 m vom aktuellen Standort entfernt oder seit der letzten Zeit 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: Zäune registrieren.