`setInitialTrigger` 在 GeofencingRequest 中的作用是什么?

10

我真的不理解GeofencingRequest类中的setInitialTrigger函数的作用。

我知道我们可以创建一些具有不同转换方式的Geofence对象:

  1. 进入
  2. 退出
  3. 逗留

对于我来说这很好和可接受。

现在,我的问题与GeofencingRequest类相关,更具体地说是与setInitialTrigger方法相关。 我真的不明白我们应该在那里放什么值... 安卓文档(这里)对该方法的含义并没有什么帮助。

想象一下我有这段代码:

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 对象。

但是想象一下,如果我有多个具有不同行为 ENTER 或 EXIT 转换的 Geofence,该如何处理/实现 GeofencingRequest Builder?

2个回答

10

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

您可以使用3个常量:

public static final int INITIAL_TRIGGER_DWELL

标志着当设备已经在某个地理围栏内一段时间时,geofencing服务应在添加地理围栏时触发GEOFENCE_TRANSITION_DWELL通知。

常量值:4

public static final int INITIAL_TRIGGER_ENTER

标志着当设备已经在某个地理围栏内时,geofencing服务应在添加地理围栏时触发GEOFENCE_TRANSITION_ENTER通知。

常量值:1

public static final int INITIAL_TRIGGER_EXIT

标志着当设备已经在某个地理围栏外时,geofencing服务应在添加地理围栏时触发GEOFENCE_TRANSITION_EXIT通知。

常量值:2

GeofencingRequest.INITIAL_TRIGGER_ENTER的含义是什么?表明geofencing服务应在添加地理围栏时触发GEOFENCE_TRANSITION_ENTER通知,如果设备已经在该地理围栏内。

检查时间差异:

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

ENTER = 已经在该地理围栏内。

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


在这种情况下,我可以将TRIGGER_ENTER和TRIGGER_EXIT放入setInitialTrigger方法中吗? 就像这样setInitialTrigger(GeofenceRequest.INITIAL_TRIGGER_ENTer | GeofenceRequest.INITIAL_TRIGGER_EXIT),它会触发每个添加了入口转换或退出的Geofence对象? - Damiii
是的,它是INITIAL_TRIGGER_ENTER和/或INITIAL_TRIGGER_EXIT和/或INITIAL_TRIGGER_DWELL的位运算,就像谷歌在https://developers.google.com/android/reference/com/google/android/gms/location/GeofencingRequest.Builder中所说的那样。 - rustem.russia
第一句话是答案。非常感谢。 - Uriel Frankel

2

您可以使用

`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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接