Zaun erstellen

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.