Ç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 bir geri çağırma alır.
İki tür çit vardır: Temel bağlam sinyalleri grubunu temsil eden ilkel çitler ve boole operatörleri kullanarak birden fazla ilkel çiti birleştiren birleşik çitler. Tüm çitler AwarenessFence örnekleridir.
İlkel bir çit oluşturun
Temel içerik sinyalleri grubunu temsil eden ilkel ç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, kullanıcının WALKING olduğu her durumda sınırın TRUE durumunda olduğu anlamına gelir.
Geçişlere tepki verme
TimeFence hariç her temel çit türü, bağlam durumu geçiş yaptığında anlık olarak tetiklenebilir. Örneğin, bir kullanıcı bir etkinliği starting veya stopping yaptığında anlık olarak tetiklenecek bir DetectedActivityFence ayarlayabilirsiniz. Geçiş çitleri, tekrar FALSE durumuna geçmeden önce birkaç saniye boyunca TRUE durumunda kalır.
Kombinasyon çiti oluşturma
Birleşik çitler, Boole operatörlerini kullanarak birden fazla ilkel çit türünü birleştirir. Aşağıdaki örnekte, kullanıcı yürüdüğünde ve kulaklık takılı olduğunda etkinleşen bir kombinasyon çitinin 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çerli olduğundan, çitlerin herhangi bir boole kombinasyonu mümkündür. Aşağıdaki örnekte, kullanıcı 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: Sınır kaydetme