Получить текущее местоположение из примера проекта геозоны

Я пробовал пример проекта геозоны Google. Я правильно получаю события входа/выхода. Но как я могу получить от него текущее местоположение пользователя. Я хотел бы отслеживать местоположение пользователя даже после точек входа/выхода. Пожалуйста помоги. пример проекта взят с портала для разработчиков.


person user1047442    schedule 19.09.2014    source источник


Ответы (2)


Вам нужно будет получить местоположение пользователя от поставщика Fused Location Provider обычным способом. Полное руководство находится здесь: http://developer.android.com/training/location/retrieve-current.html

Но в основном, когда вы получаете событие геозоны внутри своего приемника или службы, получите там экземпляр LocationClient, подключитесь к нему и в обратном вызове onConnected() получите последнее известное местоположение:

Location position = locationClient.getLastLocation();

В 99,9% случаев, а то и лучше, вы обнаружите, что это место находится внутри вашей геозоны.

Чтобы продолжить отслеживать обновления местоположения пользователя, следуйте инструкциям по получению обновлений местоположения: http://developer.android.com/training/location/receive-location-updates.html

person TonyC    schedule 19.09.2014
comment
Привет, просто чтобы прояснить мою путаницу, означает ли это, что если я использую геозону, мне не нужно отслеживать местоположение пользователя с помощью сети или GPS? Geofence делает это сама? - person Rat-a-tat-a-tat Ratatouille; 30.09.2014
comment
locationClient.getLastLocation() возвращает текущую позицию, и ни одна из них не вызвала событие (они близки, но не совпадают), GeofencingEvent.getTriggeringLocation() уже существует без использования устаревшего LocationClient - person Zorb; 10.12.2014

в вашем широковещательном приеме или службе вы получаете GeofencingEvent, используйте его, чтобы получить позицию срабатывания

public class GeofenceTransitionsIntentService extends IntentService {

    //[...]

    @Override
    protected void onHandleIntent(Intent intent) {
        GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent);
        if (geofencingEvent.hasError()) {
            // ...
        }

        Location l = geofencingEvent.getTriggeringLocation()

    }
    //[...]
}
person miv    schedule 28.10.2014