Android для регулярного обновления геозоны

Я читаю документацию отсюда.

https://developer.android.com/training/location/geofencing

Он может обновлять мое местоположение для моей геозоны, когда я запускаю эту службу. Проблема в том, что мне нужно постоянно контролировать. Итак, я думаю сделать таймер в своем сервисе и регулярно проверять свою геозону. Но, думаю, точно разрядит батарею.

Я не хочу отслеживать местоположение, и вместо этого мне нужна ОС Android, чтобы обновлять меня, входит ли пользователь в мою геозону, как iOS. Есть ли способ реализовать это?

public class GeofenceTransitionsIntentService extends IntentService {
    // ...
    protected void onHandleIntent(Intent intent) {
        GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent);
        if (geofencingEvent.hasError()) {
            String errorMessage = GeofenceErrorMessages.getErrorString(this,
                    geofencingEvent.getErrorCode());
            Log.e(TAG, errorMessage);
            return;
        }

        // Get the transition type.
        int geofenceTransition = geofencingEvent.getGeofenceTransition();

        // Test that the reported transition was of interest.
        if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_ENTER ||
                geofenceTransition == Geofence.GEOFENCE_TRANSITION_EXIT) {

            // Get the geofences that were triggered. A single event can trigger
            // multiple geofences.
            List<Geofence> triggeringGeofences = geofencingEvent.getTriggeringGeofences();

            // Get the transition details as a String.
            String geofenceTransitionDetails = getGeofenceTransitionDetails(
                    this,
                    geofenceTransition,
                    triggeringGeofences
            );

            // Send notification and log the transition details.
            sendNotification(geofenceTransitionDetails);
            Log.i(TAG, geofenceTransitionDetails);
        } else {
            // Log the error.
            Log.e(TAG, getString(R.string.geofence_transition_invalid_type,
                    geofenceTransition));
        }
    }

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

Dhaval Patel 15.11.2018 05:24

Где мне создать геозону? По основному виду деятельности или услуге? Это потому, что пользователь может убить приложение.

Khant Thu Linn 15.11.2018 06:01

Я не уверен в рабочем процессе вашего приложения. Но, возможно, вы сможете создать геозону при запуске вашего приложения. Как только вы создадите геозону, вы получите уведомление, даже если пользователь убьет приложение.

Dhaval Patel 15.11.2018 06:04

Ах хорошо. Дай мне попробовать. есть одна вещь, которую я не понимаю. Мне нужно запускать GeofenceTransitionsIntentService? Или mGeofencingClient будет автоматически вызывать GeofenceTransitionsIntentService?

Khant Thu Linn 15.11.2018 06:40

Вам не нужно запускать GeofenceTransitionsIntentService. Вам необходимо указать эту услугу при создании Geofence. Geofence вызовет для вас сервис.

Dhaval Patel 15.11.2018 06:43
0
5
167
0

Другие вопросы по теме