удалить сработавшую геозону после перехода

Я пытаюсь удалить геозону после того, как она была введена, чтобы остановить повторный запуск перехода входа. Из аналогичного вопроса я получил эту строку, которая хорошо работает

LocationServices.GeofencingApi.removeGeofences(mGoogleApiClient,getGeofencePendingIntent()).setResultCallback(this);

Однако он удаляет все геозоны, а не только ту, которая была активирована.

Что мне нужно сделать, чтобы выбрать правильный идентификатор для удаления?


person Max Marshall    schedule 28.07.2015    source источник


Ответы (1)


Вам нужно передать ту же строку, которая использовалась для построения геозоны.

String geofenceId = "randomId";
Geofence geofence = new Geofence.Builder()
    .setRequestId(geofenceId)
    ....
    .build();

GeofencingRequest request = new GeofencingRequest.Builder()
    .addGeofence(geofence)
    ....
    .build();

LocationServices.GeofencingApi.addGeofences(mGoogleApiClient, request, pendingIntent);

Чтобы удалить геозону, вы можете использовать

List<String> geofencesToRemove = new ArrayList<>();
geofencesToRemove.add(geofenceId);
LocationServices.GeofencingApi.removeGeofences(mGoogleApiClient, geofencesToRemove);

Или вы можете получить Geofence из намерения, которое вы получили.

GeofencingEvent event = GeofencingEvent.fromIntent( intent_you_got_from_geofence );
List<Geofence> triggeredGeofences = event.getTriggeringGeofences();
List<String> toRemove = new ArrayList<>();
for (Geofence geofence : triggeredGeofences) {
    toRemove.add(geofence.getRequestId());
}
LocationServices.GeofencingApi.removeGeofences(mGoogleApiClient, toRemove);
person Mimmo Grottoli    schedule 28.07.2015
comment
Спасибо, это действительно полезно! Извините за поздний ответ, несколько дней меня не было в стране! - person Max Marshall; 14.08.2015
comment
Очень полезный ответ. Спасибо - person Siva Prakash; 13.08.2018