שאילתה למצב גדר

כדי לשלוח שאילתה לגבי המצב הנוכחי של גדר, מתקשרים אל FenceClient.queryFences() ומעבירים את מפתח הגדר של הגדר שאליה רוצים לשלוח את השאילתה.

בדוגמה הבאה מפעילים את הפונקציה FenceClient.queryFences() כדי לקבל FenceStateMap, ואז משתמשים ב-FenceStateMap כדי להחזיר ערך של FenceState שמציג את המצב הנוכחי, המצב הקודם והשעה שבה הגדרת הגדר האחרונה עודכנה:

protected void queryFence(final String fenceKey) {
    Awareness.getFenceClient(this)
        .queryFences(FenceQueryRequest.forFences(Arrays.asList(fenceKey)))
        .addOnSuccessListener(new OnSuccessListener<FenceQueryResponse>() {
            @Override
            public void onSuccess(FenceQueryResponse response) {
                FenceStateMap map = response.getFenceStateMap();
                for (String fenceKey : map.getFenceKeys()) {
                    FenceState fenceState = map.getFenceState(fenceKey);
                    Log.i(TAG, "Fence " + fenceKey + ": "
                            + fenceState.getCurrentState()
                            + ", was="
                            + fenceState.getPreviousState()
                            + ", lastUpdateTime="
                            + DATE_FORMAT.format(
                            new Date(fenceState.getLastFenceUpdateTimeMillis())));
                }
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.e(TAG, "Could not query fence: " + fenceKey);
                return;
            }
        });
}