我希望在我的应用程序中添加功能,允许我使用触发的Geofence的ID从数组中选择相应的样本(url),然后可以将其传递给exoplayer进行流式传输。
目前我正在关注geofencing api,它使用挂起意图服务的待处理意图来管理地理围栏转换等。
查看主要活动中设置的待处理意图,我可以请求它在转换时返回地理围栏ID吗? 我对android和这个api都很新,所以任何和所有的帮助都会非常感激! 非常感谢!
答案 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...
}
您应该调试或记录每一行以检查它是否正常工作。如果这不起作用或不是您所期望的,请告诉我。