Tworzenie ogrodzenia

Ogrodzenie określa co najmniej 1 warunek kontekstowy, na który może reagować Twoja aplikacja. Gdy stan ogrodzenia się zmieni, aplikacja otrzyma wywołanie zwrotne.

Istnieją 2 rodzaje ogrodzeń: proste, które reprezentują podstawowy zestaw sygnałów kontekstowych, oraz złożone, które łączą wiele prostych ogrodzeń za pomocą operatorów logicznych. Wszystkie bariery są instancjami klasy AwarenessFence.

Tworzenie prostej strefy

Podstawowe ogrodzenia, które reprezentują podstawowy zestaw sygnałów kontekstowych, są zdefiniowane w pakiecie awareness.fence. Poniższy przykład pokazuje tworzenie prostego obszaru, który jest TRUE gdy wykryta aktywność użytkownika to WALKING, a w przeciwnym razie FALSE:

AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);

W poprzednim przykładzie element DetectedActivityFence został utworzony przez wywołanie funkcji during, co oznacza, że warunek jest spełniony, gdy użytkownik jest WALKING.TRUE

Reagowanie na przejścia

Każdy podstawowy typ ogrodzenia, z wyjątkiem TimeFence, może być też chwilowo aktywowany, gdy zmienia się stan kontekstu. Możesz na przykład ustawić DetectedActivityFence, aby na chwilę wywoływać zdarzenie, gdy użytkownik starting lub stopping aktywność. Granice przejścia są w stanie TRUE przez kilka sekund, zanim ponownie zmienią się w FALSE.

Tworzenie ogrodzenia kombinowanego

Ogrodzenia kombinowane łączą wiele typów ogrodzeń pierwotnych za pomocą operatorów logicznych. Poniższy przykład pokazuje tworzenie kombinacji stref, która aktywuje się, gdy użytkownik idzie i słuchawki są podłączone:

// 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
);

Zagnieżdżone drzewa AND, ORNOT są prawidłowe, więc możliwe jest dowolne połączenie logiczne płotów. Poniższy przykład pokazuje strefę, która jest aktywowana, gdy użytkownik oddali się od bieżącej lokalizacji o ponad 100 metrów lub gdy od bieżącego czasu minie ponad godzina.

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));

Następny krok: zarejestruj ogrodzenie.