从Android

时间:2018-02-08 12:09:47

标签: android android-notifications android-geofence

我添加了多个地理位置,但在IntentService中只有一次获得通知。

我的代码如下: 在Acticity页面添加geofance

Intent intent = new Intent(context, GeoIntentService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 
PendingIntent.FLAG_UPDATE_CURRENT);
PendingResult<Status> result = LocationServices.GeofencingApi.addGeofences(googleApiClient, getAddGeofencingDataToRequest(), pendingIntent);
  result.setResultCallback(new ResultCallback<Status>() {
    @Override
    public void onResult(Status status) {
      if (status.isSuccess()) {
        List<Geofence> geofencesToAdd = new ArrayList<>();
        geofencesToAdd.add(geofenceToAdd);
        GeofencingRequest.Builder builder = new GeofencingRequest.Builder();
     builder.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER);
     builder.addGeofences(geofencesToAdd);
        return builder.build();
      } else {
        Log.e(TAG, "Registering geofence failed: " + status.getStatusMessage() + " : " + status.getStatusCode());
        sendError();
      }
    }
  });


 private GeofencingRequest getAddGeofencingDataToRequest() {
     List<Geofence> geofencesToAdd = new ArrayList<>();
     geofencesToAdd.add(geofenceDataToAdd);
     GeofencingRequest.Builder builder = new GeofencingRequest.Builder();
     builder.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER);
     builder.addGeofences(geofencesToAdd);
return builder.build();
}

在IntentService中我使用代码

    onHandleIntent(){
    prefs = getApplicationContext().getSharedPreferences(Constants.SharedPrefs.Geofences, Context.MODE_PRIVATE);
    gson = new Gson();

GeofencingEvent event = GeofencingEvent.fromIntent(intent);
if (event != null) {
  if (event.hasError()) {
    onError(event.getErrorCode());

  } else {

    int transition = event.getGeofenceTransition();
    if (transition == Geofence.GEOFENCE_TRANSITION_ENTER || transition == Geofence.GEOFENCE_TRANSITION_DWELL || transition == Geofence.GEOFENCE_TRANSITION_EXIT) {
      List<String> geofenceIds = new ArrayList<>();
      for (Geofence geofence : event.getTriggeringGeofences()) {
        geofenceIds.add(geofence.getRequestId());
      }
      if (transition == Geofence.GEOFENCE_TRANSITION_ENTER || transition == Geofence.GEOFENCE_TRANSITION_DWELL) {
        onEnteredGeofences(geofenceIds);
      }
    }
  }
}
}

并致电推送通知..

我创造了4个地理位置,我到达了那4个地方。 但它仅提供一个通知。其他通知未被解雇。

请帮我解决。

0 个答案:

没有答案