फ़ेंस बनाएं

फ़ेंस, कॉन्टेक्स्ट की एक या उससे ज़्यादा ऐसी स्थितियों को तय करता है जिन पर आपका ऐप्लिकेशन प्रतिक्रिया दे सकता है. जब किसी फ़ेंस की स्थिति बदलती है, तो आपके ऐप्लिकेशन को कॉलबैक मिलता है.

फ़ेंस दो तरह के होते हैं: प्रिमिटिव फ़ेंस, जो कॉन्टेक्स्ट के सिग्नल के बुनियादी सेट को दिखाते हैं. दूसरे, कॉम्बिनेशन फ़ेंस, जो बूलियन ऑपरेटरों का इस्तेमाल करके, एक से ज़्यादा प्रिमिटिव फ़ेंस को जोड़ते हैं. सभी फ़ेंस, AwarenessFence के इंस्टेंस होते हैं.

प्रिमिटिव फ़ेंस बनाना

प्रिमिटिव फ़ेंस, कॉन्टेक्स्ट के सिग्नल के बुनियादी सेट को दिखाते हैं. इन्हें तय किया जाता है में awareness.fence पैकेज. यहां एक सामान्य फ़ेंस बनाने का उदाहरण दिया गया है. जब उपयोगकर्ता की गतिविधि WALKING के तौर पर पता चलती है, तब यह TRUE होता है. इसके अलावा, यह FALSE होता है:

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

ऊपर दिए गए उदाहरण में, DetectedActivityFence को duringपर कॉल करके बनाया गया है. इसका मतलब है कि जब भी उपयोगकर्ता WALKING कर रहा होता है, तब फ़ेंस TRUE स्थिति में होता है.

ट्रांज़िशन पर प्रतिक्रिया देना

TimeFence को छोड़कर, हर तरह के प्रिमिटिव फ़ेंस को कॉन्टेक्स्ट की स्थिति में बदलाव होने पर भी ट्रिगर किया जा सकता है. उदाहरण के लिए, आप इस तरह सेट कर सकते हैं कि जब कोई उपयोगकर्ता किसी गतिविधि को starting या stopping करता है, तो वह कुछ समय के लिए ट्रिगर हो जाए.DetectedActivityFence ट्रांज़िशन फ़ेंस, FALSE होने से पहले कुछ सेकंड के लिए TRUE स्थिति में होते हैं.

कॉम्बिनेशन फ़ेंस बनाना

कॉम्बिनेशन फ़ेंस, बूलियन ऑपरेटरों का इस्तेमाल करके, एक से ज़्यादा तरह के प्रिमिटिव फ़ेंस को जोड़ते हैं. यहां एक कॉम्बिनेशन फ़ेंस बनाने का उदाहरण दिया गया है. यह तब चालू होता है, जब उपयोगकर्ता चल रहा हो और हेडफ़ोन प्लग इन हों:

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

अगला चरण: फ़ेंस रजिस्टर करना.