Utwórz płot

Szermierka określa jeden lub więcej warunków kontekstowych, na które może reagować aplikacja. Po zmianie stanu płotu Twoja aplikacja otrzymuje wywołanie zwrotne.

Istnieją 2 rodzaje ogrodzeń: ogrodzenie podstawowe, reprezentujące podstawowy zestaw sygnałów kontekstowych, oraz ogrodzenia łączone, które łączą kilka głównych ogrodzeń za pomocą operatorów logicznych. Wszystkie ogrodzenia to wystąpienia elementu AwarenessFence.

Tworzenie podstawowego ogrodzenia

Ogrodzenia podstawowe, które reprezentują podstawowy zestaw sygnałów kontekstowych, są zdefiniowane w pakiecie awareness.fence. Poniższy przykład pokazuje utworzenie prostego ogrodzenia: TRUE, gdy użytkownik wykryje aktywność: WALKING. W innym przypadku FALSE:

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

W poprzednim przykładzie obiekt DetectedActivityFence został utworzony przez wywołanie do during, co oznacza, że ogrodzenia są w stanie TRUE zawsze, gdy użytkownik ma WALKING.

Reaguj na przejścia

Każdy typ ogrodzenia podstawowego, z wyjątkiem TimeFence, może się też uruchomić w momencie zmiany stanu kontekstu. Możesz np. skonfigurować DetectedActivityFence w taki sposób, aby wywoływał się w chwili, gdy użytkownik wywoła działanie: starting lub stopping. Ogrodzenia przejściowe znajdują się w stanie TRUE przez kilka sekund, a potem ponownie są FALSE.

Tworzenie ogrodzenia łączącego

Ogrodzenia mieszane łączą różne typy ogrodzeń za pomocą operatorów logicznych. Poniższy przykład pokazuje połączenie ogrodzeń, które się aktywują podczas spaceru i podłączenia słuchawek:

// 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, OR i NOT są prawidłowe, więc możliwa jest każda logiczna kombinacja ogrodzeń. Poniższy przykład pokazuje szermierkę, która jest wyświetlana, gdy użytkownik znajdzie się w odległości 100 metrów od bieżącej lokalizacji lub ponad godzinę od bieżącego czasu.

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 płot