Coğrafi sınırları oluşturma ve izleme

Coğrafi sınır çizme, kullanıcının mevcut konumuyla ilgili farkındalığı, kullanıcının ilgilenebileceği konumlara yakınlığıyla ilgili farkındalıkla birleştirir. Önemli bir konumu işaretlemek için bu konumun enlem ve boylamını belirtirsiniz. Konuma yakınlığı ayarlamak için bir yarıçap eklersiniz. Enlem, boylam ve yarıçap, bir coğrafi çiti tanımlayarak ilgilenilen konumun çevresinde dairesel bir alan veya çit oluşturur.

Uygulama başına ve cihaz kullanıcısı başına 100 adetle sınırlı olmak üzere birden fazla etkin coğrafi sınıra sahip olabilirsiniz. Her bir coğrafi sınır için Konum Hizmetleri'nden size giriş ve çıkış etkinlikleri göndermesini isteyebilir veya bir etkinliği tetiklemeden önce, geofence alanında bir süre beklemeniz ya da beklemeniz için bir süre belirtebilirsiniz. Milisaniye cinsinden bir geçerlilik süresi belirterek coğrafi sınırların süresini sınırlayabilirsiniz. Coğrafi sınır süresi dolduktan sonra Konum Hizmetleri tarafından otomatik olarak kaldırılır.

Bu derste, coğrafi sınırların nasıl ekleneceği ve kaldırılacağı, ardından BroadcastReceiver kullanarak coğrafi sınır geçişlerinin nasıl dinleneceği gösterilmektedir.

Coğrafi sınır izleme için kurulum

Coğrafi sınır izleme isteğinde bulunmanın ilk adımı, gerekli izinleri istemektir. Coğrafi sınır çizmeyi kullanmak için uygulamanızın aşağıdakileri istemesi gerekir:

Daha fazla bilgi için konum izni isteme ile ilgili kılavuza bakın.

Geofence geçişlerini dinlemek için bir BroadcastReceiver kullanmak istiyorsanız hizmet adını belirten bir öğe ekleyin. Bu öğe, <application> öğesinin alt öğesi olmalıdır:

<application
   android:allowBackup="true">
   ...
   <receiver android:name=".GeofenceBroadcastReceiver"/>
<application/>

Konum API'lerine erişmek için Geofencing istemcisinin bir örneğini oluşturmanız gerekir. İstemcinizi nasıl bağlayacağınızı öğrenmek için:

Kotlin

lateinit var geofencingClient: GeofencingClient

override fun onCreate(savedInstanceState: Bundle?) {
    // ...
    geofencingClient = LocationServices.getGeofencingClient(this)
}

Java

private GeofencingClient geofencingClient;

@Override
public void onCreate(Bundle savedInstanceState) {
    // ...
    geofencingClient = LocationServices.getGeofencingClient(this);
}

Coğrafi sınır oluşturma ve ekleme

Uygulamanızın, Geofence nesnelerini oluşturmak için konum API'sinin derleyici sınıfını ve bunları eklemek için kolaylık sınıfını kullanarak coğrafi çitler oluşturup eklemesi gerekir. Ayrıca, coğrafi sınır geçişleri gerçekleştiğinde Konum Hizmetleri'nden gönderilen amaçları işlemek için bu bölümde gösterildiği gibi bir PendingIntent tanımlayabilirsiniz.

Not: Tek kullanıcılı cihazlarda uygulama başına 100 coğrafi sınır sınırı vardır. Çok kullanıcılı cihazlarda ise sınır, cihaz kullanıcısı başına uygulama başına 100 coğrafi sınırdır.

Geofence nesneleri oluşturma

Öncelikle, coğrafi sınır için istenen yarıçapı, süreyi ve geçiş türlerini ayarlayarak bir coğrafi sınır oluşturmak için Geofence.Builder kullanın. Örneğin, bir liste nesnesini doldurmak için:

Kotlin

geofenceList.add(Geofence.Builder()
        // Set the request ID of the geofence. This is a string to identify this
        // geofence.
        .setRequestId(entry.key)

        // Set the circular region of this geofence.
        .setCircularRegion(
                entry.value.latitude,
                entry.value.longitude,
                Constants.GEOFENCE_RADIUS_IN_METERS
        )

        // Set the expiration duration of the geofence. This geofence gets automatically
        // removed after this period of time.
        .setExpirationDuration(Constants.GEOFENCE_EXPIRATION_IN_MILLISECONDS)

        // Set the transition types of interest. Alerts are only generated for these
        // transition. We track entry and exit transitions in this sample.
        .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER or Geofence.GEOFENCE_TRANSITION_EXIT)

        // Create the geofence.
        .build())

Java

geofenceList.add(new Geofence.Builder()
    // Set the request ID of the geofence. This is a string to identify this
    // geofence.
    .setRequestId(entry.getKey())

    .setCircularRegion(
            entry.getValue().latitude,
            entry.getValue().longitude,
            Constants.GEOFENCE_RADIUS_IN_METERS
    )
    .setExpirationDuration(Constants.GEOFENCE_EXPIRATION_IN_MILLISECONDS)
    .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER |
            Geofence.GEOFENCE_TRANSITION_EXIT)
    .build());

Bu örnek, bir sabit değerler dosyasından veri çeker. Gerçekte, uygulamalar kullanıcının konumuna göre dinamik olarak coğrafi sınırlar oluşturabilir.

Coğrafi sınırları ve ilk tetikleyicileri belirleme

Aşağıdaki snippet, izlenecek coğrafi sınırları belirtmek ve ilgili coğrafi sınır etkinliklerinin nasıl tetikleneceğini ayarlamak için GeofencingRequest sınıfını ve bu sınıfın iç içe yerleştirilmiş GeofencingRequestBuilder sınıfını kullanır:

Kotlin

private fun getGeofencingRequest(): GeofencingRequest {
    return GeofencingRequest.Builder().apply {
        setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER)
        addGeofences(geofenceList)
    }.build()
}

Java

private GeofencingRequest getGeofencingRequest() {
    GeofencingRequest.Builder builder = new GeofencingRequest.Builder();
    builder.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER);
    builder.addGeofences(geofenceList);
    return builder.build();
}

Bu örnekte, iki geofence tetikleyicisinin kullanımı gösterilmektedir. GEOFENCE_TRANSITION_ENTER geçişi, bir cihaz coğrafi sınıra girdiğinde tetiklenir ve GEOFENCE_TRANSITION_EXIT geçişi, bir cihaz coğrafi sınırdan çıktığında tetiklenir. INITIAL_TRIGGER_ENTER belirtilmesi, Konum hizmetlerine, cihaz zaten coğrafi sınır kapsamındaysa GEOFENCE_TRANSITION_ENTER uygulamasının tetiklenmesi gerektiğini bildirir.

Birçok durumda, etkinlikleri yalnızca kullanıcı bir coğrafi sınır dahilinde belirli bir süre boyunca durdurduğunda tetikleyen INITIAL_TRIGGER_DWELL yerine kullanılması tercih edilebilir. Bu yaklaşım, bir cihaz coğrafi sınırlara kısa süreli olarak girip çıktığında çok sayıda bildirim gelmesinden kaynaklanan "uyarı spam'leri"nin azaltılmasına yardımcı olabilir. Coğrafi çitlerden en iyi sonuçları almak için başka bir strateji de minimum 100 metrelik bir yarıçap ayarlamaktır. Bu şekilde tipik kablosuz ağların konum doğruluğu hesaba katılır ve cihaz güç tüketimi azaltılır.

Coğrafi sınır geçişleri için yayın alıcısı tanımlama

Konum Hizmetleri'nden gönderilen bir Intent, uygulamanızdaki çeşitli işlemleri tetikleyebilir. Ancak, bileşenler yalnızca kullanıcı işlemine yanıt olarak görünür hale geleceğinden bu öğenin bir etkinlik veya parça başlatmasını zorunlu kılmamanız gerekir. Çoğu durumda BroadcastReceiver, coğrafi sınır geçişini yönetmenin iyi bir yoludur. BroadcastReceiver, coğrafi sınıra geçiş veya coğrafi sınırdan çıkma gibi bir etkinlik gerçekleştiğinde güncellemeler alır ve uzun süreli arka plan çalışmasına başlayabilir.

Aşağıdaki snippet, BroadcastReceiver başlatan bir PendingIntent öğesinin nasıl tanımlanacağını gösterir:

Kotlin

class MainActivity : AppCompatActivity() {

    // ...

    private val geofencePendingIntent: PendingIntent by lazy {
        val intent = Intent(this, GeofenceBroadcastReceiver::class.java)
        // We use FLAG_UPDATE_CURRENT so that we get the same pending intent back when calling
        // addGeofences() and removeGeofences().
        PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
    }
}

Java

public class MainActivity extends AppCompatActivity {

    // ...

    private PendingIntent getGeofencePendingIntent() {
        // Reuse the PendingIntent if we already have it.
        if (geofencePendingIntent != null) {
            return geofencePendingIntent;
        }
        Intent intent = new Intent(this, GeofenceBroadcastReceiver.class);
        // We use FLAG_UPDATE_CURRENT so that we get the same pending intent back when
        // calling addGeofences() and removeGeofences().
        geofencePendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.
                FLAG_UPDATE_CURRENT);
        return geofencePendingIntent;
    }

Coğrafi sınır ekleyin

Coğrafi sınır eklemek için GeofencingClient.addGeofences() yöntemini kullanın. GeofencingRequest nesnesini ve PendingIntent öğesini sağlayın. Aşağıdaki snippet, sonuçların işlenmesini göstermektedir:

Kotlin

geofencingClient?.addGeofences(getGeofencingRequest(), geofencePendingIntent)?.run {
    addOnSuccessListener {
        // Geofences added
        // ...
    }
    addOnFailureListener {
        // Failed to add geofences
        // ...
    }
}

Java

geofencingClient.addGeofences(getGeofencingRequest(), getGeofencePendingIntent())
        .addOnSuccessListener(this, new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                // Geofences added
                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Failed to add geofences
                // ...
            }
        });

Coğrafi sınır geçişlerini işleme

Konum Hizmetleri, kullanıcının bir coğrafi sınıra girdiğini veya bir coğrafi sınırdan çıktığını algıladığında, coğrafi sınır ekleme isteğine dahil ettiğiniz PendingIntent içindeki Intent bilgisini gönderir. GeofenceBroadcastReceiver gibi bir yayın alıcısı, Intent çağrıldığını fark eder ve daha sonra amaçtan coğrafi sınır çizme etkinliğini elde edebilir, Coğrafi sınır geçişlerinin türünü ve tanımlanan coğrafi sınırlardan hangisinin tetiklendiğini belirleyebilir. Yayın alıcısı, bir uygulamayı arka planda çalışmaya başlamak için yönlendirebilir veya istenirse çıkış olarak bir bildirim gönderebilir.

Not: Android 8.0 (API düzeyi 26) ve sonraki sürümlerde, bir uygulama coğrafi sınır izlerken arka planda çalışıyorsa cihaz, her birkaç dakikada bir coğrafi sınır çizme etkinliklerine yanıt verir. Uygulamanızı bu yanıt sınırlarına nasıl uyarlayacağınızı öğrenmek için Arka Planda Konum Sınırları bölümüne bakın.

Aşağıdaki snippet, bir coğrafi sınır geçişi gerçekleştiğinde bildirim yayınlayan bir BroadcastReceiver öğesinin nasıl tanımlanacağını göstermektedir. Kullanıcı bildirimi tıkladığında, uygulamanın ana etkinliği görünür:

Kotlin

class GeofenceBroadcastReceiver : BroadcastReceiver() {
    // ...
    override fun onReceive(context: Context?, intent: Intent?) {
        val geofencingEvent = GeofencingEvent.fromIntent(intent)
        if (geofencingEvent.hasError()) {
            val errorMessage = GeofenceStatusCodes
                    .getStatusCodeString(geofencingEvent.errorCode)
            Log.e(TAG, errorMessage)
            return
        }

        // Get the transition type.
        val geofenceTransition = geofencingEvent.geofenceTransition

        // 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.
            val triggeringGeofences = geofencingEvent.triggeringGeofences

            // Get the transition details as a String.
            val 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))
        }
    }
}

Java

public class GeofenceBroadcastReceiver extends BroadcastReceiver {
    // ...
    protected void onReceive(Context context, Intent intent) {
        GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent);
        if (geofencingEvent.hasError()) {
            String errorMessage = GeofenceStatusCodes
                    .getStatusCodeString(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));
        }
    }
}

Geçiş etkinliğini PendingIntent üzerinden tespit ettikten sonra, BroadcastReceiver geofence geçiş türünü alır ve bunun, uygulamanın bildirimleri tetiklemek için kullandığı etkinliklerden biri (bu durumda GEOFENCE_TRANSITION_ENTER veya GEOFENCE_TRANSITION_EXIT) olup olmadığını test eder. Ardından hizmet bir bildirim gönderir ve geçiş ayrıntılarını günlüğe kaydeder.

Coğrafi sınır izlemeyi durdurma

Coğrafi sınır izlemenin artık ihtiyaç duyulmadığı veya istenmediği durumlarda durdurulması, cihazdaki pil gücünden ve CPU döngülerinden tasarruf edilmesine yardımcı olabilir. Coğrafi sınırları eklemek ve kaldırmak için kullanılan ana işlemde coğrafi sınır izlemeyi durdurabilirsiniz. Coğrafi sınırın kaldırılması bunu hemen durdurur. API, istek kimlikleriyle veya belirli bir PendingIntent ile ilişkili coğrafi sınırları kaldırarak coğrafi çitleri kaldırma yöntemleri sağlar.

Aşağıdaki snippet, coğrafi sınırları PendingIntent tarihine kadar kaldırır ve cihaz daha önce eklenen coğrafi sınırlara girdiğinde veya bu sınırlardan çıktığında diğer tüm bildirimleri durdurur:

Kotlin

geofencingClient?.removeGeofences(geofencePendingIntent)?.run {
    addOnSuccessListener {
        // Geofences removed
        // ...
    }
    addOnFailureListener {
        // Failed to remove geofences
        // ...
    }
}

Java

geofencingClient.removeGeofences(getGeofencePendingIntent())
        .addOnSuccessListener(this, new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                // Geofences removed
                // ...
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Failed to remove geofences
                // ...
            }
        });

Coğrafi sınırları, periyodik konum güncellemeleri gibi konuma duyarlı diğer özelliklerle birleştirebilirsiniz. Daha fazla bilgi için bu sınıftaki diğer derslere göz atın.

Coğrafi sınır çizme için en iyi uygulamaları kullanma

Bu bölümde, Android için konum API'leriyle coğrafi sınır çizmeyi kullanmaya yönelik öneriler özetlenmektedir.

Güç tüketimini azaltın

Coğrafi sınır çizme kullanan uygulamalarınızda güç tüketimini optimize etmek için aşağıdaki teknikleri kullanabilirsiniz:

  • Bildirim duyarlılığını daha yüksek bir değere ayarlayın. Bu sayede coğrafi sınır uyarılarının gecikmesini artırarak güç tüketimini artırırsınız. Örneğin, beş dakikalık bir duyarlılık değeri ayarlarsanız uygulamanız giriş veya çıkış uyarısını yalnızca beş dakikada bir kontrol eder. Daha düşük değerler belirlemek, kullanıcıların bu süre içinde bilgilendirildiği anlamına gelmez (örneğin, 5 saniyelik bir değer ayarlarsanız uyarının alınması biraz daha uzun sürebilir).

  • Ev veya iş gibi bir kullanıcının önemli bir süre geçirdiği konumlar için daha geniş bir coğrafi sınır yarıçapı kullanın. Daha geniş bir yarıçap, güç tüketimini doğrudan azaltmasa da, uygulamanın giriş veya çıkış kontrol etme sıklığını azaltarak genel güç tüketimini etkili bir şekilde azaltır.

Coğrafi sınır için en uygun yarıçapı seçin

En iyi sonuçlar için coğrafi sınır yarıçapının minimum yarıçapı 100 - 150 metre arasına ayarlanmalıdır. Kablosuz bağlantı varsa konum doğruluğu genellikle 20 - 50 metre arasındadır. İç mekan konumu kullanılabiliyorsa doğruluk aralığı 5 metre kadar küçük olabilir. Coğrafi sınır içinde iç mekan konumunun olup olmadığını bilmiyorsanız kablosuz konum doğruluğunun yaklaşık 50 metre olduğunu varsayın.

Kablosuz konum kullanılamıyorsa (örneğin, kırsal bölgelerden araç kullanıyorsanız) konum doğruluğu düşer. Doğruluk aralığı, birkaç yüz metre ile birkaç kilometre arasında olabilir. Bu gibi durumlarda, daha büyük bir yarıçap kullanarak coğrafi sınırlar oluşturmalısınız.

Kullanıcılara uygulamanızın coğrafi sınır çizmeyi neden kullandığını açıklayın

Coğrafi sınır çizme özelliğini kullandığınızda uygulamanız arka planda konum bilgisine eriştiğinden, uygulamanızın kullanıcılara nasıl avantajlar sağladığını düşünün. Kullanıcıları anlamayı ve şeffaflığı artırmak için uygulamanızın neden bu erişime ihtiyacı olduğunu açık bir şekilde açıklayın.

Coğrafi sınır çizme dahil olmak üzere konum erişimiyle ilgili en iyi uygulamalar hakkında daha fazla bilgi için gizlilikle ilgili en iyi uygulamalar sayfasına bakın.

Uyarı spam'ini azaltmak için bekleme geçiş türünü kullanma

Coğrafi sınırı kısa süreliğine geçerken çok sayıda uyarı alırsanız uyarıları azaltmanın en iyi yolu GEOFENCE_TRANSITION_ENTER yerine GEOFENCE_TRANSITION_DWELL geçiş türü kullanmaktır. Bu şekilde konut uyarısı yalnızca kullanıcı belirli bir süre boyunca coğrafi sınırların içinde durduğunda gönderilir. Gezinti gecikmesi ayarlayarak süreyi seçebilirsiniz.

Coğrafi sınırları yalnızca gerektiğinde yeniden kaydedin

Kaydedilen coğrafi sınırlar, com.google.android.gms paketinin sahip olduğu com.google.process.location işleminde tutulur. Sistem, coğrafi sınırları şu etkinliklerden sonra geri yüklediği için uygulamanın aşağıdaki etkinlikleri işlemek için herhangi bir işlem yapması gerekmez:

  • Google Play Hizmetleri yeni sürüme geçirildi.
  • Google Play hizmetleri, kaynak kısıtlaması nedeniyle sistem tarafından sonlandırılıp yeniden başlatılıyor.
  • Konum işlemi kilitleniyor.

Sistem aşağıdaki durumlarda coğrafi sınırları kurtaramayacağından, aşağıdaki olaylardan sonra hâlâ gerekliyse uygulamanın coğrafi sınırları yeniden kaydetmesi gerekir:

  • Cihaz yeniden başlatılır. Uygulama, cihazın başlatma işleminin tamamlanmasını dinlemeli ve ardından gerekli coğrafi sınırları yeniden kaydetmelidir.
  • Uygulama kaldırılır ve yeniden yüklenir.
  • Uygulamanın verileri temizlenir.
  • Google Play Hizmetleri verileri temizlendi.
  • Uygulama GEOFENCE_NOT_AVAILABLE uyarısı aldı. Bu durum genellikle NLP (Android'in Ağ Konumu Sağlayıcısı) devre dışı bırakıldıktan sonra gerçekleşir.

Coğrafi sınır giriş etkinliğiyle ilgili sorunları giderme

Cihaz bir coğrafi sınıra girdiğinde coğrafi çitler tetiklenmiyorsa ( GEOFENCE_TRANSITION_ENTER uyarısı tetiklenmez) öncelikle coğrafi çitlerinizin bu kılavuzda açıklandığı gibi doğru şekilde kaydedildiğinden emin olun.

Uyarıların beklendiği gibi çalışmamasının bazı olası nedenleri aşağıda açıklanmıştır:

  • Coğrafi sınırınızın içinde doğru konum yok veya coğrafi sınır çok küçük. Coğrafi sınır hizmeti, çoğu cihazda coğrafi sınır tetikleme işlemi için yalnızca ağ konumunu kullanır. Hizmet bu yaklaşımı kullanır çünkü ağ konumu çok daha az güç tüketir, farklı konumları almak daha az zaman alır ve en önemlisi iç mekanlarda kullanılabilir.
  • Cihazda kablosuz bağlantı kapalıysa. Kablosuz bağlantının açık olması, konum doğruluğunu önemli ölçüde iyileştirebilir. Bu nedenle, kablosuz bağlantı kapatılırsa uygulamanız coğrafi sınır yarıçapı, cihaz modeli veya Android sürümü gibi çeşitli ayarlara bağlı olarak hiçbir zaman coğrafi sınır uyarıları almayabilir. Android 4.3'ten (API düzeyi 18) başlayarak, kullanıcıların kablosuz bağlantıyı devre dışı bırakmasına rağmen iyi bir ağ konumu almalarına olanak tanıyan "yalnızca kablosuz ağ tarama modu" özelliğini ekledik. Her ikisi de devre dışıysa kullanıcıdan istemi ve yalnızca kablosuz ağ veya yalnızca kablosuz ağ taraması modunu etkinleştirmesi için kullanıcıya bir kısayol sunmak iyi bir uygulamadır. Cihazın sistem ayarlarının optimum konum algılaması için doğru şekilde yapılandırıldığından emin olmak için SettingsClient kullanın.

    Not: Uygulamanız Android 10 (API düzeyi 29) veya sonraki sürümleri hedefliyorsa uygulamanız bir sistem uygulaması veya cihaz politikası denetleyici (DPC) değilse doğrudan WifiManager.setEnabled() yöntemini çağıramazsınız. Bunun yerine bir ayarlar paneli kullanın.

  • Coğrafi sınırlarınızın içinde güvenilir bir ağ bağlantısı yoktur. Güvenilir bir veri bağlantısı yoksa uyarılar oluşturulmayabilir. Bunun nedeni, coğrafi sınır hizmetinin, veri bağlantısı gerektiren ağ konumu sağlayıcısına bağlı olmasıdır.
  • Uyarılar gecikebilir. Geofence hizmeti sürekli olarak konum sorgulaması yapmadığından, uyarılar alınırken biraz gecikme yaşanabilir. Cihaz hareket halindeyken bile gecikme genellikle 2 dakikadan azdır. Arka Planda Konum Sınırları etkinse gecikme ortalama 2-3 dakikadır. Cihaz uzun bir süre hareketsiz kalırsa gecikme artabilir (6 dakikaya kadar).

Ek kaynaklar

Coğrafi sınır çizme hakkında daha fazla bilgi edinmek için aşağıdaki materyalleri inceleyin:

Numuneler

Coğrafi sınırları oluşturmak ve izlemek için örnek uygulama.