Çit oluşturma

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

İki tür çit vardır: bağlam sinyallerinin temel kümesini temsil eden temel çitler ve birden fazla temel çiti Boole operatörleri kullanarak birleştiren kombinasyon çitleri. Tüm çitler AwarenessFence örnekleridir.

Basit bir çit oluşturma

Bağlam sinyallerinin temel grubunu temsil eden temel çitler, awareness.fence paketinde tanımlanır. Aşağıdaki örnekte, kullanıcının algılanan etkinliği WALKING olduğunda TRUE, aksi takdirde FALSE olan basit bir çitin oluşturulması gösterilmektedir:

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

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

Geçişlere tepki verme

TimeFence hariç her temel sınır türü, bağlam durumu geçiş yaptığında anlık olarak da tetiklenebilir. Örneğin, bir kullanıcı starting veya stopping bir etkinlikte bulunduğunda anlık olarak tetiklenecek bir DetectedActivityFence ayarlayabilirsiniz. Geçiş çitleri, tekrar FALSE durumuna dönmeden önce birkaç saniye boyunca TRUE durumunda kalır.

Kombinasyon çit oluşturma

Birleştirilmiş çitler, Boole operatörleri kullanılarak birden fazla temel çit türünü birleştirir. Aşağıdaki örnekte, kullanıcının yürüdüğü ve kulaklığın takılı olduğu durumlarda etkinleşen birleşik çit oluşturma işlemi 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 ağaçları geçerlidir. Bu nedenle, çitlerin herhangi bir Boole kombinasyonu mümkündür. Aşağıdaki örnekte, kullanıcının mevcut konumdan 100 metreden fazla uzaklaştığında veya mevcut zamandan bir saatten fazla süre geçtiğinde tetiklenen bir çit gösterilmektedir.

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: Çit kaydedin.