אחרי שרושמים גדר וירטואלית, האפליקציה צריכה להוסיף קריאה חוזרת (callback) כדי להגיב כשהגדר מופעלת. אפשר לעשות זאת באמצעות מחלקת משנה של BroadcastReceiver
כדי לטפל בשיטות Intent
מתוך גדרות.
לפני שמוסיפים קריאות חוזרות לגדר וירטואלית, צריך קודם לרשום את הגדר.
יצירת מחלקת משנה של BroadcastReceiver
בדוגמה הבאה מוצגת המחלקה FenceReceiver
, שהיא הרחבה של BroadcastReceiver
. המחלקות מטמיעות את BroadcastReceiver.onReceive()
שיטת הקריאה החוזרת כדי לטפל בכל השיטות Intent
שמקורן בגדרות וירטואליות שנוצרו על ידי האפליקציה. כשמתקבל Intent
, נעשה שימוש בשיטה FenceState.extract()
כדי לקבל את מצב הגדר הווירטואלית ולהעביר אותו לקריאה החוזרת.
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);
}
}
}