地理围栏待定意图返回

时间:2015-07-25 11:23:45

标签: android arrays android-intent geofencing android-geofence

我希望在我的应用程序中添加功能,允许我使用触发的Geofence的ID从数组中选择相应的样本(url),然后可以将其传递给exoplayer进行流式传输。

目前我正在关注geofencing api,它使用挂起意图服务的待处理意图来管理地理围栏转换等。

查看主要活动中设置的待处理意图,我可以请求它在转换时返回地理围栏ID吗? 我对android和这个api都很新,所以任何和所有的帮助都会非常感激! 非常感谢!

1 个答案:

答案 0 :(得分:1)

如果我正确地理解了您的问题(我可能没有),那么当转换事件发生时,应该已经返回了Geofence ID。

在触发PendingIntent时解释文档:

  

您可以致电GeofencingEvent.fromIntent(Intent)以获取转换类型,地理围栏   触发了这个意图和触发的意图   地理围栏过渡。

从生成的GeofencingEvent对象中,您可以调用getTriggeringGeofences()来检索导致转换的Geofence列表,然后在每个上检索getRequestId()以检索ID。

修改 一些代码...这是未经测试的(因为我拒绝跳测试Geofence边界!),但我希望它应该工作。 我假设您已经有一个有效的Geofence设置,并且它正在正确地调用您的IntentService。在您的IntentService中,您应该有一个onHandleIntent方法:

void onHandleIntent(Intent intent) {
    // retrieve the GeofencingEvent from the passed Intent
    GeofencingEvent ge = GeofencingEvent.fromIntent(intent);

    // get the Geofences that triggered it
    List<Geofence> fences = ge.getTriggeringGeofences();

    // checking there is only one fence (bad assumption!!!!), retrieve the request Id
    if (fences == null || fences.size() != 1) {
        return;
    }
    String fenceID = fences.get(0).getRequestId();

    // do something funky with it...
}

您应该调试或记录每一行以检查它是否正常工作。如果这不起作用或不是您所期望的,请告诉我。