我尝试使用以下代码更新栅栏:
AwarenessFence locationFence = LocationFence.entering(latitude, longitude, radius);
Awareness.FenceApi.updateFences(
mGoogleApiClient,
new FenceUpdateRequest.Builder()
.addFence(LOCATION_FENCE_KEY, locationFence, mPendingIntent)
.build())
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if (status.isSuccess()) {
Log.i(TAG, "Fence was successfully registered.");
} else {
Log.e(TAG, "Fence could not be registered: " + status);
}
}
});它在物理设备上工作得很好,但在模拟器上我得到了以下logcat消息:
Status{statusCode=unknown status code: 7503, resolution=null}有没有人知道是什么导致了这个问题?
发布于 2016-08-24 04:14:28
你有没有试过在模拟器中设置位置?此页包含以下说明:
发布于 2016-08-30 16:38:34
根据文档,7503 means
ACL_ACCESS_DENIED: ACL身份验证失败。
但是,这似乎是一个仿真器问题,因为注册TimeFence对我来说确实有效。而Location-和ActivityFences则不需要。
AwarenessFence timeFence = TimeFence.inSaturdayInterval(TimeZone.getDefault(), 0, 24 * 60 * 60 * 1000);发布于 2016-11-11 03:36:30
要使用感知API,您需要:
GooglePlayServices (在模拟器上,Google Apis)
定位栅栏:在设备上激活的定位服务。如果是在模拟器或立式设备上,我认为你可以伪造它。
似乎活动检测感知使用了一组复杂的传感器,如加速计,巨型望远镜,位置等等。所以我现在不知道这在模拟器上能有多高的效率。
最后,设备/仿真器需要Internet连接!乍一看,您可能会认为Awareness API是一项离线服务。这不是。如果你检查你的Google开发者控制台,你可以看到对Google服务器的感知请求。
@jmols亲切地澄清了这个错误: API试图访问安全链以连接感知服务,但失败了。可能是因为设备没有网络连接。
如果您的模拟器上有internet连接,请在Google开发人员控制台上仔细检查此API的凭据。
https://stackoverflow.com/questions/38891252
复制相似问题