फ़ेंस एक या एक से ज़्यादा संदर्भ स्थितियों के बारे में बताता है, जिन पर आपका ऐप्लिकेशन प्रतिक्रिया दे सकता है. बाड़ की स्थिति बदलने पर, आपके ऐप्लिकेशन को कॉलबैक मिलता है.
दो तरह की बाड़ होती हैं: बुनियादी बाड़, जो संदर्भ सिग्नल के बुनियादी सेट और कॉम्बिनेशन के बाड़ के बारे में बताती हैं. ये बाड़, बूलियन ऑपरेटर के इस्तेमाल के साथ, कई बुनियादी बाड़ को जोड़ती हैं. सभी फ़ेंस, AwarenessFence
के इंस्टेंस हैं.
पहले से मौजूद फ़ेंस बनाना
बुनियादी बाड़, जो संदर्भ के सिग्नल के बुनियादी सेट को दिखाती हैं, उन्हें awareness.fence
पैकेज में बताया गया है. इस उदाहरण में, एक आसान फ़ेंस बनाने के बारे में बताया गया है, जो TRUE
है, जब उपयोगकर्ता की गतिविधि के बारे में पता चलता है कि WALKING
,
और FALSE
है, तो:
AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);
पिछले उदाहरण में, DetectedActivityFence
को during
पर कॉल करके बनाया गया था. इसका मतलब है कि बाड़ को TRUE
होने पर, TRUE
की स्थिति में रखा जाता है.WALKING
ट्रांज़िशन पर प्रतिक्रिया देना
संदर्भ स्थिति के ट्रांज़िशन होने पर, TimeFence
को छोड़कर हर एक दूसरे बाड़ को कभी-कभी ट्रिगर भी किया जा सकता है. उदाहरण के लिए, जब कोई उपयोगकर्ता
starting
या
stopping
गतिविधि हो, तो आप
तुरंत के लिए ट्रिगर कर सकते हैं.DetectedActivityFence
ट्रांज़िशन के लिए बाड़, TRUE
स्थिति में हैं और FALSE
के बाद उन्हें कुछ सेकंड के लिए फिर से चालू करना है.
कॉम्बिनेशन के लिए फ़ेंस बनाना
कॉम्बिनेशन के बाड़, बूलियन ऑपरेटर के इस्तेमाल से कई बुनियादी बाड़ जोड़ देते हैं. इस उदाहरण में, कॉम्बिनेशन के बाड़ बनाने का तरीका बताया गया है. यह बाड़ तब चालू होता है, जब उपयोगकर्ता और हेडफ़ोन पर चलता है:
// 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
, और NOT
के नेस्ट किए गए पेड़ मान्य हैं, इसलिए फ़ेंस का कोई भी बूलियन कॉम्बिनेशन हो सकता है. नीचे दिए गए उदाहरण में एक बाड़ दिखाया गया है, जो मौजूदा जगह से 100 मीटर की दूरी पर जाने पर उपयोगकर्ता को ट्रिगर होता है. या मौजूदा समय से एक घंटे से ज़्यादा समय तक चलने वाला बाड़.
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));
अगला चरण: बाड़ रजिस्टर करना.