Truy vấn trạng thái hàng rào

Để truy vấn trạng thái hiện tại của một hàng rào, hãy gọi FenceClient.queryFences() và truyền khoá hàng rào cho hàng rào cần truy vấn.

Ví dụ sau đây gọi FenceClient.queryFences() để lấy FenceStateMap, sau đó dùng FenceStateMap để trả về giá trị FenceState nhằm cho biết trạng thái hiện tại, trạng thái trước đó và thời gian cập nhật gần đây nhất của hàng rào:

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