GeofencingRequest 上的 setInitialTrigger 的目的是什么?

what is the purpose of `setInitialTrigger` on GeofencingRequest?

GeofencingRequestclass.

上的函数setInitialTrigger我真的不明白

我知道我们可以创建一些 Geofence 具有不同过渡的对象:

  1. 输入
  2. 退出
  3. 停留

这对我来说很好并且可以接受。

现在,我的问题是相对于 class GeofencingRequest,更准确地说是方法 setInitialTrigger。 我真的不明白我们应该放在那里的价值...... Android 文档 (here) 对于该方法的含义并没有真正帮助。

假设我有这段代码:

private GeofencingRequest getGeofencingRequest() {
        GeofencingRequest.Builder builder = new GeofencingRequest.Builder();
        builder.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER);
        builder.addGeofences(mGeofenceList);
        return builder.build();
    }

GeofencingRequest.INITIAL_TRIGGER_ENTER 是什么意思?

对我来说,这意味着 GeofencingRequest 应该触发任何具有 ENTER 转换的 Geofence 对象。

但假设我有多个具有不同行为进入或退出转换的地理围栏。

我应该如何 handle/implement 使用 GeofencingRequest Builder?

builder.setInitialTrigge 在添加地理围栏时设置 地理围栏通知行为。

您可以使用 3 个常量:

public static final int INITIAL_TRIGGER_DWELL

一个标志,表示地理围栏服务应该在添加地理围栏时触发 GEOFENCE_TRANSITION_DWELL 通知,如果设备已经在该地理围栏内一段时间。

常数值:4

public static final int INITIAL_TRIGGER_ENTER

一个标志,表示地理围栏服务应该在添加地理围栏时触发 GEOFENCE_TRANSITION_ENTER 通知,如果设备已经在该地理围栏内。

常数值:1

public static final int INITIAL_TRIGGER_EXIT

一个标志,表示地理围栏服务应该在添加地理围栏时触发 GEOFENCE_TRANSITION_EXIT 通知,如果设备已经在该地理围栏之外。

常数值:2

GeofencingRequest.INITIAL_TRIGGER_ENTER 是什么意思? 指示地理围栏服务应该在添加地理围栏时触发,如果设备已经在该地理围栏内。

查看时间差:

DWELL = 已经在该地理围栏内一段时间了。

ENTER = 已在该地理围栏内。

EXIT = 已经在该地理围栏之外。

您可以使用

`public GeofencingRequest getGeofencingRequest(Geofence geofence){
        return  new GeofencingRequest.Builder()
                .addGeofence(geofence)
                .setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_DWELL|
                                   GeofencingRequest.INITIAL_TRIGGER_ENTER|
                                   GeofencingRequest.INITIAL_TRIGGER_EXIT)
                .build();
    }`

此函数将在 ENTERDWELLEXIT 中的任何一个发生时触发 GeofenceRequest