我正在使用意识API。我检查我的围栏是否处于活动状态。 Google代码已弃用,因此您可以看到我的问题和答案here。为了检查状态,我使用以下代码:
public static void isFencesActive(final Context context) {
Awareness.getFenceClient(context).queryFences(FenceQueryRequest.forFences(Arrays.asList(DETECTION_FENCE_DRIVING, DETECTION_FENCE_DRIVING_STOP)))
.addOnSuccessListener(new OnSuccessListener<FenceQueryResponse>() {
@Override
public void onSuccess(FenceQueryResponse fenceQueryResponse) {
FenceStateMap map = fenceQueryResponse.getFenceStateMap();
fenceCallBack.isRegistered(!map.getFenceKeys().isEmpty());
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
但是有非常奇怪的行为。当我卸载我的应用程序然后再次安装(不更新)时,命令
map.getFenceKeys()
在卸载之前将所有已注册的栅栏给我。那怎么可能?
注意:如果我未注册围栏,该函数将按原样返回空字符串。