GeofencingRequest上`setInitialTrigger`的目的是什么?

时间:2017-10-12 14:53:31

标签: android geofencing

我真的不理解setInitialTrigger课上的GeofencingRequest功能。

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

  1. 输入
  2. 退出
  3. 停留
  4. 这对我来说没问题且可以接受。

    现在,我的问题与班级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对象。

    但是想象一下,我有多个Geofence,具有不同的行为ENTER或EXIT过渡。

    我应该如何处理/实施GeofencingRequest Builder?

2 个答案:

答案 0 :(得分:7)

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 =已经超出地理围栏。

答案 1 :(得分:1)

您可以使用

`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();
    }`

GeofenceRequestENTERDWELL中的任何一个发生时,此功能将触发EXIT