Android Awareness API多重围栏注册

时间:2017-04-30 04:27:14

标签: android google-play-services android-geofence google-awareness

我正在尝试使用Androids感知API在多个会话中注册多个位置围栏。但每次我注册一个新的位置围栏时,它似乎都会丢弃我的旧位置围栏而不再触发它们。

String uniqueId = UUID.getid().toString() // sample to indicate this is always 
unique
AwarenessFence geoFence = LocationFence.in(lat, long, radius);
            Awareness.FenceApi.updateFences(
                        googleApiClient,
                        new FenceUpdateRequest.Builder()
                                .addFence(uniqueId, geoFence, pendingIntent)
                                .build())
                        .setResultCallback(new ResultCallback () { .....});

我的待定意图:

Intent intent = new Intent(GeoBroadcastReceiver.BROADCAST_KEY);
        Bundle bundle;
        bundle = new Bundle();
        bundle.putSerializable("model", model);
        intent.putExtra("specialBundle", bundle);
        PendingIntent geoBroadCastPendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
  

文档说这是如何添加围栏,但我不知道我需要保留   跟踪我的旧围栏,随时随地使用   Awareness.FenceApi.updateFences,我需要每次添加它们吗?

1 个答案:

答案 0 :(得分:0)

您可能需要检查围栏密钥。

Register a fence中所述,注册围栏需要以下内容:

  • Google Play Services API Client个实例。
  • AwarenessFence实例(围栏本身)。
  • 处理状态更改的PendingIntent
  • 围栏密钥(用于标识围栏的字符串,并映射到AwarenessFence / PendingIntent对)。

另请注意,如果您使用已注册的围栏密钥呼叫addFence(),则会覆盖该密钥的AwarenessFencePendingIntent值。

希望有所帮助!