我正在开发使用Google Geofence API的Android应用。 应用程序处于前台时,我的代码似乎工作正常,但只要应用程序移至暂停状态,地理围栏广播接收器就会停止接收事件。 我非常确定当应用程序转移到后台时,地理围栏会被删除,但我不知道为什么会发生这种情况。
我发现,我创建了一个地理围栏列表
Geofence geofence = new Geofence.Builder()
.setRequestId(id)
.setCircularRegion(lat, lng, GEOFENCE_RADIUS)
.setExpirationDuration(Geofence.NEVER_EXPIRE)
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_DWELL)
.setLoiteringDelay(1000)
.build();
geofences.add(geofence);
然后我创建了一个请求
geofenceRequest = new GeofencingRequest.Builder()
.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_DWELL)
.addGeofences(geofences)
.build();
此时我添加地理围栏
LocationServices.GeofencingApi.addGeofences(googleApiClient, request, createGeofencePendingIntent()).setResultCallback(this);
最后我启动广播接收器
String GEOFENCE_ACTION = "gac.broadcast.geofence";
if (geoFencePendingIntent != null)
{
GoogleApiClientManager.setGeofencePendingIntent(geoFencePendingIntent);
return geoFencePendingIntent;
}
Intent intent = new Intent(GEOFENCE_ACTION);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), GEOFENCE_REQ_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
GoogleApiClientManager.setGeofencePendingIntent(pendingIntent);
return pendingIntent;
正如我已经说过的那样,一切都在前景中运行时完美无缺,但只要应用程序移动到后台,地理围栏事件就会停止发送给接收方。
附加信息(与广播接收方问题无关): 我试着做以下事情:
希望一切都清楚,你们中的某个人可以帮助我。 提前致谢
答案 0 :(得分:0)
实际上问题在于定义接收器意图。
我改变了
Intent intent = new Intent(GEOFENCE_ACTION);
到
Intent intent = new Intent(context, GeofenceBroadcastReceiver.class);
现在接收器在后台和前台都会收到通知。 希望这也可以帮助其他人。