ניהול התקשרות חזרה לגדרות

אחרי שרושמים גדר וירטואלית, האפליקציה צריכה להוסיף קריאה חוזרת (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);
        }
    }
}