জিওফেন্স তৈরি করা

ফেন্স এক বা একাধিক প্রাসঙ্গিক শর্ত নির্ধারণ করে যার ভিত্তিতে আপনার অ্যাপ প্রতিক্রিয়া জানাতে পারে। ফেন্সের স্ট্যাটাস পরিবর্তন হলে, আপনার অ্যাপ কলব্যাক পায়।

দুই ধরনের ফেন্স আছে: প্রিমিটিভ ফেন্স, যা কন্টেক্সট সিগন্যালের প্রাথমিক সেটকে দেখায় এবং কম্বিনেশন ফেন্স, যা বুলিয়ান অপারেটর ব্যবহার করে একাধিক প্রিমিটিভ ফেন্সকে একত্রিত করে। সব ফেন্স হল AwarenessFence-এর ইনস্ট্যান্স।

একটি আদিম বেড়া তৈরি করো

প্রিমিটিভ ফেন্স, যা প্রসঙ্গ সিগন্যালের প্রাথমিক সেটকে উপস্থাপন করে, তা awareness.fence প্যাকেজে সংজ্ঞায়িত করা হয়েছে। নিম্নলিখিত উদাহরণে দেখানো হয়েছে যে কীভাবে একটি সাধারণ ফেন্স তৈরি করা যায় যা TRUE যখন ব্যবহারকারীর শনাক্ত করা অ্যাক্টিভিটি হল WALKING, এবং অন্যথায় 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-এর নেস্টেড ট্রি বৈধ, তাই ফেন্সের যেকোনও বুলিয়ান কম্বিনেশন সম্ভব। নিম্নলিখিত উদাহরণে এমন একটি ফেন্স দেখানো হয়েছে যা ব্যবহারকারী বর্তমান লোকেশন থেকে ১০০ মিটারের বেশি দূরে গেলে, অথবা বর্তমান সময় থেকে এক ঘণ্টার বেশি সময় অতিবাহিত হলে ট্রিগার হয়।

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

পরবর্তী ধাপ: ফেন্স রেজিস্টার করা।