java - Google Awareness API 围栏
问题描述
请帮助我理解为什么我设置的意识围栏没有返回 TRUE 状态为“静止”。我在我的手机上运行应用程序,我是“静止”的,我已经让手机“静止”了一段时间,以确保它们不会延迟触发。
注意:我的围栏已成功注册,因此 api 请求等不会有问题。我的广播接收器也永远不会触发。
下面代码的结果是:
I/Awareness: Fence was successfully registered.
I/Awareness: Fence sitting_at_work: 0, was=0
代码:
AwarenessFence sittingFence = DetectedActivityFence.during(DetectedActivityFence.STILL);
Intent intent = new Intent(getContext(), activityReceiver.class);
intent.setAction(activityReceiver.ACTION_FENCE);
myPendingIntent = PendingIntent.getBroadcast(getContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Awareness.getFenceClient(getContext()).updateFences(new FenceUpdateRequest.Builder()
.addFence(activityReceiver.KEY_SITTING_AT_WORK, sittingFence, myPendingIntent)
.build())
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.i("Awareness", "Fence was successfully registered.");
Awareness.getFenceClient(getContext())
.queryFences(FenceQueryRequest.forFences(Arrays.asList(activityReceiver.KEY_SITTING_AT_WORK)))
.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("Awareness", "Fence " + fenceKey + ": "
+ fenceState.getCurrentState()
+ ", was="
+ fenceState.getPreviousState());
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("Awareness", "Could not query fence: " + activityReceiver.KEY_SITTING_AT_WORK);
return;
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("Awareness", "Fence could not be registered: " + e);
}
});
广播接收器 onReceive:
if (TextUtils.equals(ACTION_FENCE, intent.getAction())) {
FenceState fenceState = FenceState.extract(intent);
Log.d("Awareness", "Detected fence action"); }
解决方案
推荐阅读
- android - 临时保存数据
- javascript - Angular 可观察服务返回 foreach 数组。需要执行for循环http请求
- bluetooth-lowenergy - BLE Eddystone 数据包 - RSSI、Tx 和距离
- javascript - 打字稿泛型 - 将接口键用于另一种键类型
- sharepoint-2013 - 如何使用 CSOM 将列表共享点列表附件复制到文档库
- powerbi-desktop - Power BI 钻取多行
- kubernetes - kubectl kubectl apply 什么都不做
- android-intent - 如何使用意图(Android TV)打开谷歌搜索键盘?
- pine-script - 是否可以在脚本中区分研究与策略?
- single-sign-on - Identity Serve 4 令牌重新认证