Çit oluşturma

Çitler, uygulamanızın tepki verebileceği bir veya daha fazla bağlam koşulu tanımlar. Bir çitin durumu değiştiğinde, uygulamanız geri çağırma alır.

İki tür çit vardır: Temel içerik sinyali grubunu temsil eden temel çitler ve birden fazla temel çiti boole operatörleri kullanarak birleştiren çitler. Tüm çitler AwarenessFence öğesinin örnekleridir.

Temel çit oluşturun

Temel içerik sinyali grubunu temsil eden temel çitler awareness.fence paketinde tanımlanır. Aşağıdaki örnekte, kullanıcının tespit ettiği etkinlik WALKING ve TRUE dışında FALSE olan basit bir çit oluşturulması gösterilmektedir:

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

Önceki örnekte, DetectedActivityFence during çağrısıyla oluşturulmuştur. Bu, kullanıcı WALKING olduğunda çitin TRUE durumunda olduğu anlamına gelir.

Geçişlere tepki verme

TimeFence hariç her temel çit türü, bağlam durumu değiştiğinde kısa bir süre içinde de tetiklenebilir. Örneğin, DetectedActivityFence özelliğini kullanıcı starting veya stopping bir etkinlik olduğunda anlık olarak tetiklenecek şekilde ayarlayabilirsiniz. Geçiş çitleri, FALSE haline dönmeden önce birkaç saniye TRUE durumunda kalır.

Kombine çit oluşturun

Kombine çitler, birden fazla temel çit türünü boole operatörlerinin kullanımıyla birleştirir. Aşağıdaki örnekte, kullanıcı yürürken ve kulaklık takıldığında etkinleşen bir kombinasyon çiti oluşturulması gösterilmektedir:

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

AND, OR ve NOT iç içe yerleştirilmiş ağaçları geçerlidir. Bu nedenle herhangi bir boole çit kombinasyonu mümkündür. Aşağıdaki örnekte bir kullanıcı geçerli konumdan 100 metreden fazla hareket ettiğinde veyaveya geçerli saatten bu yana bir saatten fazla zaman geçtiğinde tetiklenen bir çit görebilirsiniz.

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

Sonraki adım: Bir çit kaydedin.