Để truy vấn trạng thái hiện tại của rào chắn, hãy gọi FenceClient.queryFences() và truyền khoá rào chắn cho rào chắn cần truy vấn.
Ví dụ sau đây gọi FenceClient.queryFences() để lấy FenceStateMap, sau đó sử 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 điểm cập nhật rào chắn gần đây nhất:
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;
}
});
}