Uygulamanızın konum istemesi veya izin güncellemeleri alması gerekiyorsa
cihazın GPS veya Wi-Fi gibi uygun sistem ayarlarını etkinleştirmesi gerekir
taranıyor. Cihazın GPS'i gibi hizmetleri doğrudan etkinleştirmek yerine,
Uygulamanız gereken doğruluk/güç tüketimi düzeyini belirtiyor
yapar ve cihaz da uygun güncellemeleri otomatik olarak yapar ve
sistem ayarlarında değişiklikler yapabilirsiniz. Bu ayarlar
LocationRequest
veri nesnesidir.
Bu derste, Ayarlar İstemcisi hangi ayarların etkinleştirildiğini kontrol edebilir ve Konum Ayarları'nı gösterebilirsiniz. tek bir dokunuşla ayarlarını güncellemesini sağlayan iletişim kutusu.
Konum hizmetlerini yapılandırma
Google Play Hizmetleri ve Google Play Hizmetleri tarafından sağlanan konum hizmetlerini kullanmak için kullanıyorsanız, uygulamanızı Google Apps'ta Ayarlar İstemcisi, ardından mevcut konum ayarlarını kontrol edin ve kullanıcıdan emin olun.
Özellikleri, konum hizmetlerini kullanan uygulamaların konum izni isteyebilir, bu özelliklerin kullanım alanlarına göre değişir.
Konum isteği oluşturma
Çok kaynaklı konum sağlayıcıya yapılan isteklere ilişkin parametreleri depolamak için
LocationRequest
.
Parametreler, konum isteklerinin doğruluk düzeyini belirler. Örneğin,
ayrıntıları görmek için
LocationRequest
sınıf referansını gösterir. Bu ders, güncelleme aralığını, en hızlı güncelleme
aralığı ve önceliği aşağıda açıklandığı gibi ayarlayın:
- Güncelleme aralığı
- .
setInterval()
- Bu yöntem, uygulamanızın konum güncellemeleri alabilirsiniz. Konum güncellemelerinin bir miktar pil kullanımını optimize etmek için bu hızdan daha hızlı veya yavaş olabilir ya da hiçbir güncelleme olmamasına dikkat edin (örneğin, cihazın bağlantısı yoksa). - En hızlı güncelleme aralığı
- .
setFastestInterval()
- Bu yöntem en hızlı hızı milisaniye cinsinden en hızlı şekilde Ayrıca, uygulamanız konum güncellemelerini işleyebilir. Uygulamanız belirtilen orandan daha hızlı güncelleme alıyor.setInterval()
için bu yöntemi çağırmanıza gerek yoktur. - Öncelik
-
setPriority()
- Bu yöntem, isteğin önceliğini belirler. Bu da Google Play'e hizmet konum hizmetleri, hangi konum kaynaklarının kullanılacağına dair güçlü bir ipucu. Aşağıdaki değerler desteklenir:-
PRIORITY_BALANCED_POWER_ACCURACY
- Bir şehir içinde konum hassasiyeti istemek için bu ayarı kullanın Bu, yaklaşık 100 metrelik bir doğruluk sağlar. Bu genel doğruluk düzeyi olarak kabul edilir ve kullanıcının daha az tüketeceği güç. Bu ayarla, konum hizmetleri büyük ihtimalle kablosuz bağlantı kullanır yardımcı olabilir. Ancak konum seçiminin, özellikle de sağlayıcı; hangi kaynakların kullanılabilir. -
PRIORITY_HIGH_ACCURACY
- Mümkün olan en kesin konumu istemek için bu ayarı kullanın. Entegre Bu ayarda, konum hizmetlerinin GPS kullanma olasılığı konum belirlemek için. PRIORITY_LOW_POWER
- Şehir düzeyinde kesinlik isteğinde bulunmak için bu ayarı kullanın. Şehir düzeyinde yaklaşık 10 kilometre doğrulukta. Bu, çoğunlukla daha az güç tüketir.PRIORITY_NO_POWER
- Güç tüketimi üzerinde önemli bir etkiye ihtiyacınız yoksa bu ayarı kullanın. ancak varsa konum güncellemelerini almak isteyen kullanıcılar. Bununla ayarı, uygulamanız konum güncellemelerini tetiklemez, ancak Diğer uygulamalar tarafından tetiklenen konumları alır.
-
Konum isteğini oluşturun ve parametreleri aşağıda gösterildiği gibi ayarlayın kod örneği:
Kotlin
fun createLocationRequest() { val locationRequest = LocationRequest.Builder() .setIntervalMillis(10000) .setFastestIntervalMillis(5000) .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY) .build() }
Java
protected void createLocationRequest() { LocationRequest locationRequest = LocationRequest.Builder() .setIntervalMillis(10000) .setFastestIntervalMillis(5000) .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY) .build(); }
Projenin önceliği
PRIORITY_HIGH_ACCURACY
şununla birlikte:
ACCESS_FINE_LOCATION
Uygulama manifest dosyasında tanımladığınız izin ayarı ve hızlı güncelleme
5000 milisaniye (5 saniye) aralık, kaynaşmış konuma neden olur
konum güncellemelerinin doğru yanıt vermesini sağlayabilirsiniz.
Bu yaklaşım, konumu şurada gösteren harita uygulamaları için uygundur:
yardımcı olur.
Performans ipucu: Uygulamanız ağ üzerinden çalışıyorsa veya konum güncellemesi aldıktan sonra uzun süre çalışan başka bir çalışma yapıyorsa en hızlı aralığı daha yavaş bir değere ayarlar. Bu ayarlama, uygulamanın kullanamadığı güncellemeleri almasını engeller. Uzun süreli işler tamamlandıktan sonra en hızlı aralığı tekrar hızlı bir değere ayarlayın.
Geçerli konum ayarlarını al
Google Play Hizmetleri'ne ve konum hizmetlerine bağlandıktan sonra
API'de bir kullanıcının cihazının mevcut konum ayarlarını alabilirsiniz. Yapılacaklar
bunun için bir
LocationSettingsRequest.Builder
ve bir veya daha fazla konum isteği ekleyin. Aşağıdaki kod snippet'i, sitenizin
ifadesini ekleyin:
Kotlin
val builder = LocationSettingsRequest.Builder() .addLocationRequest(locationRequest)
Java
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(locationRequest);
Sonra, geçerli konum ayarlarının uygun olup olmadığını kontrol edin:
Kotlin
val builder = LocationSettingsRequest.Builder() // ... val client: SettingsClient = LocationServices.getSettingsClient(this) val task: Task<LocationSettingsResponse> = client.checkLocationSettings(builder.build())
Java
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder(); // ... SettingsClient client = LocationServices.getSettingsClient(this); Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build());
Task
işlemi tamamlandığında, uygulamanız duruma bakarak konum ayarlarını
LocationSettingsResponse
içinden alınan kod
nesnesini tanımlayın. Alakalı müşteri formlarının mevcut durumu hakkında daha da
konum ayarlarına bağlı olarak, uygulamanız
LocationSettingsResponse
nesnenin
getLocationSettingsStates()
yöntemidir.
Kullanıcıdan konum ayarlarını değiştirmesini iste
Konum ayarlarının konum için uygun olup olmadığını belirlemek
isteği, bir
- OnFailureListener
Task
nesnesini ifade eder. Ardından,
Exception
nesnesi,
onFailure()
yöntemi,
ResolvableApiException
sınıfıdır. Bu, ayarların
değiştirilmelidir. Ardından, kullanıcının
numaralı telefonu arayarak konum ayarlarını değiştirin
startResolutionForResult()
değerleridir.
Aşağıdaki kod snippet'i, kullanıcı konumunun
ayarları, konum hizmetlerinin bir oluşturmasına izin veriyor
LocationRequest
ve kullanıcıdan
konum ayarlarını değiştirme izni vermeniz gerekir:
Kotlin
task.addOnSuccessListener { locationSettingsResponse -> // All location settings are satisfied. The client can initialize // location requests here. // ... } task.addOnFailureListener { exception -> if (exception is ResolvableApiException){ // Location settings are not satisfied, but this can be fixed // by showing the user a dialog. try { // Show the dialog by calling startResolutionForResult(), // and check the result in onActivityResult(). exception.startResolutionForResult(this@MainActivity, REQUEST_CHECK_SETTINGS) } catch (sendEx: IntentSender.SendIntentException) { // Ignore the error. } } }
Java
task.addOnSuccessListener(this, new OnSuccessListener<LocationSettingsResponse>() { @Override public void onSuccess(LocationSettingsResponse locationSettingsResponse) { // All location settings are satisfied. The client can initialize // location requests here. // ... } }); task.addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { if (e instanceof ResolvableApiException) { // Location settings are not satisfied, but this can be fixed // by showing the user a dialog. try { // Show the dialog by calling startResolutionForResult(), // and check the result in onActivityResult(). ResolvableApiException resolvable = (ResolvableApiException) e; resolvable.startResolutionForResult(MainActivity.this, REQUEST_CHECK_SETTINGS); } catch (IntentSender.SendIntentException sendEx) { // Ignore the error. } } } });
Bir sonraki derste Konum Güncellemelerini Alma, TV'de düzenli konum güncellemelerini nasıl alacağınızı öğrenebilirsiniz.