Awareness API-তে, বেড়ার ধারণাটি জিওফেন্সিং থেকে নেওয়া হয়েছে, যেখানে একটি ভৌগোলিক অঞ্চল, বা জিওফেন্স , সংজ্ঞায়িত করা হয় এবং যখন কোনও ব্যবহারকারী জিওফেন্স অঞ্চলে প্রবেশ করে বা ছেড়ে যায় তখন একটি অ্যাপ কলব্যাক গ্রহণ করে। বেড়া API ভৌগোলিক প্রক্সিমিটি ছাড়াও অন্যান্য অনেক প্রসঙ্গ শর্ত অন্তর্ভুক্ত করার জন্য জিওফেন্সিংয়ের ধারণাটি প্রসারিত করে। যখনই প্রসঙ্গ অবস্থা পরিবর্তন হয় তখন একটি অ্যাপ কলব্যাক গ্রহণ করে। উদাহরণস্বরূপ, যদি আপনার অ্যাপ হেডফোনের জন্য একটি বেড়া সংজ্ঞায়িত করে, তবে হেডফোনগুলি প্লাগ ইন করা এবং আনপ্লাগ করা হলে এটি কলব্যাক পায়।
আপনি Fence API ব্যবহার করে কনটেক্সট সিগন্যালের উপর ভিত্তি করে বেড়া নির্ধারণ করতে পারেন, যেমন নিম্নলিখিত:
- ব্যবহারকারীর বর্তমান অবস্থান (অক্ষাংশ/দ্রাঘিমাংশ)
- ব্যবহারকারীর বর্তমান কার্যকলাপ, যেমন হাঁটা বা গাড়ি চালানো।
- ডিভাইস-নির্দিষ্ট অবস্থা, যেমন হেডফোনগুলি প্লাগ ইন করা আছে কিনা।
- কাছাকাছি বীকনের সান্নিধ্য
Fence API আপনাকে AND , OR , এবং NOT বুলিয়ান অপারেটর দিয়ে বেড়া তৈরি করতে একাধিক প্রসঙ্গ সংকেত একত্রিত করতে দেয়। এরপর যখনই বেড়ার শর্ত পূরণ হয় তখন আপনার অ্যাপ কলব্যাক গ্রহণ করে। সম্ভাব্য বেড়ার কিছু উদাহরণের মধ্যে রয়েছে:
- ব্যবহারকারী হেডফোন লাগান এবং হাঁটা শুরু করেন।
- ব্যবহারকারী কর্মদিবসে বিকেল ৫টার আগে ১০০ মিটার জিওফেন্সে প্রবেশ করেন।
- ব্যবহারকারী একটি নির্দিষ্ট BLE বীকনের পরিসরে প্রবেশ করে।
নিম্নলিখিত উদাহরণটি দেখায় যে ব্যবহারকারী যখনই হাঁটেন তখন সক্রিয় হয় এমন একটি বেড়া কীভাবে সংজ্ঞায়িত করতে হয়:
AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);
একবার আপনি একটি বেড়া সংজ্ঞায়িত করার পরে, আপনাকে নিম্নলিখিতগুলি করতে হবে:
- কলব্যাক পেতে বেড়া নিবন্ধন করতে
updateFencesকল করুন। - বেড়ার অবস্থা পরিবর্তন হলে একটি কলব্যাক আহ্বান করা যেতে পারে তা সংজ্ঞায়িত করুন।
নিচের উদাহরণে একটি পদ্ধতি দেখানো হয়েছে যা একটি বেড়া তৈরি এবং নিবন্ধন করে। এই উদাহরণে, বেড়াটি ট্রিগার হলে উদ্দেশ্য পরিচালনা করার জন্য BroadcastReceiver এর একটি কাস্টম সাবক্লাস ব্যবহার করা হয়।
Awareness.getFenceClient(this).updateFences(new FenceUpdateRequest.Builder()
.addFence(FENCE_KEY, exercisingWithHeadphonesFence, mPendingIntent)
.build())
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.i(TAG, "Fence was successfully registered.");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, "Fence could not be registered: " + e);
}
});
public class FenceReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
FenceState fenceState = FenceState.extract(intent);
if (TextUtils.equals(fenceState.getFenceKey(), FENCE_KEY)) {
String fenceStateStr;
switch (fenceState.getCurrentState()) {
case FenceState.TRUE:
fenceStateStr = "true";
break;
case FenceState.FALSE:
fenceStateStr = "false";
break;
case FenceState.UNKNOWN:
fenceStateStr = "unknown";
break;
default:
fenceStateStr = "unknown value";
}
mLogFragment.getLogView().println("Fence state: " + fenceStateStr);
}
}
}