1. Başlamadan önce
Android 10 ve 11, kullanıcılara uygulamaları üzerinde daha fazla kontrol sunar. kendi cihaz konumlarına erişebilir.
Android 11'de çalışan bir uygulama konum erişimi istediğinde kullanıcıların dört seçeneği olur:
- Her zaman izin ver
- Yalnızca uygulama kullanılırken izin ver (Android 10'da)
- Yalnızca bir kez (Android 11'de)
- Reddet
Android 10
Android 11
Bu codelab'de, konum güncellemelerini nasıl alacağınızı ve Android'in herhangi bir sürümünde (özellikle Android 10 ve 11) konum özelliğini nasıl destekleyeceğinizi öğreneceksiniz. Codelab'in sonunda, konum güncellemelerini almak için mevcut en iyi uygulamaları izleyen bir uygulamanız olacağını bekleyebilirsiniz.
Ön koşullar
- Android uygulaması geliştirme hakkında bilgi
- Etkinlikler, hizmetler ve izinler hakkında biraz bilgi sahibi olmak
Yapacaklarınız
- Android'de konumla ilgili en iyi uygulamaları takip edin.
- Ön plan konum izinlerini işleme (kullanıcı, uygulamanız kullanılırken uygulamanızın cihaz konumuna erişmesini istediğinde).
- Konuma abone olma ve abonelikten çıkma kodu ekleyerek mevcut bir uygulamayı konum erişimi isteme desteği ekleyecek şekilde değiştirebilirsiniz.
- Android 10 ve 11 için uygulamaya destek sağlamak için ön planda veya kullanımdayken konuma erişme mantığı ekleyin.
Gerekenler
- Kodu çalıştırmak için Android Studio 3.4 veya sonraki sürümleri
- Android 10 ve 11'in geliştirici önizlemesini çalıştıran bir cihaz/emülatör
2. Başlarken
Başlangıç proje deposunu klonlama
Mümkün olduğunca hızlı bir başlangıç yapmak için bu başlangıç projesini temel alabilirsiniz. Bilgisayarınızda Git yüklüyse aşağıdaki komutu çalıştırmanız yeterlidir:
git clone https://github.com/android/codelab-while-in-use-location
GitHub sayfasını doğrudan ziyaret edebilirsiniz.
Git'iniz yoksa projeyi zip dosyası olarak alabilirsiniz:
Projeyi içe aktarma
Android Studio'yu açın ve "Mevcut bir Android Studio projesini aç"ı seçin. karşılama ekranından açın ve proje dizinini açın.
Proje yüklendikten sonra, Git'in tüm yerel değişikliklerinizi izlemediğini belirten bir uyarı da görebilirsiniz. Yoksay'ı tıklayabilirsiniz. (Git deposuna herhangi bir değişiklik aktarmazsınız.)
Android görünümünü kullanıyorsanız proje penceresinin sol üst köşesinde aşağıdaki resme benzer bir sonuç gösterilir. (Proje görünümündeyseniz aynı şeyi görmek için projeyi genişletmeniz gerekir.)
İki klasör var (base
ve complete
). Bunların her biri "modül" olarak bilinir.
Android Studio'nun projeyi arka planda ilk kez derlemesinin birkaç saniye sürebileceğini lütfen unutmayın. Bu süre boyunca Android Studio'nun en altındaki durum çubuğunda şu mesajı görürsünüz:
Kod değişikliği yapmadan önce Android Studio'nun dizine eklemeyi ve projeyi oluşturmayı tamamlamasını bekleyin. Bu, Android Studio'nun gerekli tüm bileşenleri almasına olanak tanır.
Dil değişikliklerinin geçerli olması için yeniden yüklensin mi? veya benzer bir istem alırsanız Evet'i seçin.
Başlangıç projesini anlama
Kurulum tamamlandı ve uygulamada konum bilgisi istemeye hazırsınız. Başlangıç noktası olarak base
modülünü kullanın. Her adımda base
modülüne kod ekleyin. Bu codelab'i tamamladığınızda base
modülündeki kod, complete
modülünün içeriğiyle eşleşmelidir. complete
modülünü, çalışmanızı kontrol etmek veya herhangi bir sorunla karşılaştığınızda referans olarak kullanmak için kullanabilirsiniz.
Temel bileşenler şunları içerir:
MainActivity
: Uygulamanın cihaz konumuna erişmesine izin vermek için kullanıcının kullandığı kullanıcı arayüzüLocationService
: Kullanıcı uygulamanın etkinliğinden ayrılırsa konum değişikliklerine abone olan, abonelikten çıkan ve kendisini bir ön plan hizmetine (bildirimle) tanıtan hizmet. Konum kodunu buraya eklersiniz.Util
-Location
sınıfı için uzantı işlevleri ekler veSharedPreferences
sınıfına konumu kaydeder (basitleştirilmiş veri katmanı).
Emülatör kurulumu
Android emülatörü kurma hakkında bilgi için Emülatörde çalıştırma konusuna bakın.
Başlangıç projesini çalıştırma
Uygulamanızı çalıştırın.
- Android cihazınızı bilgisayarınıza bağlayın veya bir emülatör başlatın. (Cihazın Android 10 veya sonraki bir sürümü çalıştırdığından emin olun.)
- Araç çubuğundaki açılır seçiciden
base
yapılandırmasını seçin ve Çalıştır'ı tıklayın:
- Cihazınızda aşağıdaki uygulamanın göründüğüne dikkat edin:
Çıkış ekranında konum bilgisinin görünmediğini fark edebilirsiniz. Bunun nedeni henüz konum kodunu eklememiş olmanızdır.
3. Konum ekleniyor
Kavramlar
Bu codelab'in odak noktası, konum güncellemelerini nasıl alacağınızı göstermek ve sonrasında Android 10 ile Android 11'i desteklemektir.
Ancak kodlamaya başlamadan önce temel bilgileri gözden geçirmeniz önerilir.
Konum erişimi türleri
Codelab'in başında konum erişimiyle ilgili dört farklı seçeneği hatırlarsınız. Ne anlama geldiklerine göz atın:
- Yalnızca uygulama kullanılırken izin verme
- Bu seçenek, çoğu uygulama için önerilen seçenektir. "Kullanımdayken" olarak da bilinir. veya "yalnızca ön plan" erişimi olmadan, bu seçenek Android 10'da eklenmiştir ve geliştiricilerin yalnızca uygulama aktif olarak kullanılırken konum bilgisi almasına olanak tanır. Bir uygulama, aşağıdakilerden biri doğruysa etkin olarak kabul edilir:
- Etkinlik görünür durumda.
- Devam eden bir bildirimle ön plan hizmeti çalışıyor.
- Yalnızca bir defa
- Android 11'de kullanıma sunulan bu özellik, Yalnızca uygulama kullanılırken izin ver ayarıyla aynı şekilde sunulur, ancak kısıtlı bir süre için geçerli olur. Daha fazla bilgi için Tek seferlik izinler başlıklı makaleye bakın.
- Reddet
- Bu seçenek, konum bilgilerine erişimi engeller.
- Her zaman izin ver
- Bu seçenek konum erişimine her zaman izin verir ancak Android 10 ve sonraki sürümler için ek bir izin gerektirir. Ayrıca geçerli bir kullanım alanınız olduğundan ve konum politikalarına uyduğunuzdan emin olmanız gerekir. Daha nadir kullanılan bir kullanım alanı olduğundan bu codelab'de bu seçenek ele alınmayacaktır. Ancak geçerli bir kullanım alanınız varsa ve arka planda konuma erişim de dahil olmak üzere her zaman konum bilgisini nasıl düzgün şekilde kullanacağınızı anlamak istiyorsanız LocationUpdatesBackgroundKotlin örneğini inceleyin.
Hizmetler, ön plan hizmetleri ve bağlama
Yalnızca uygulama kullanılırken izin ver konum güncellemelerinin tam olarak desteklenmesi için kullanıcının uygulamanızdan ayrıldığı zamanı dikkate almanız gerekir. Bu durumda güncelleme almaya devam etmek istiyorsanız ön plan Service
oluşturup bir Notification
ile ilişkilendirmeniz gerekir.
Buna ek olarak, uygulamanız görünür olduğunda ve kullanıcı uygulamanızdan ayrıldığında konum güncellemesi istemek için aynı Service
öğesini kullanmak isterseniz bu Service
öğesini kullanıcı arayüzü öğesine bağlamanız/bağlantısını kaldırmanız gerekir.
Bu codelab yalnızca konum güncellemeleri almaya odaklandığından ihtiyacınız olan tüm kodları ForegroundOnlyLocationService.kt
sınıfında bulabilirsiniz. İlgili sınıfa ve MainActivity.kt
öğesine göz atarak birlikte nasıl çalıştıklarını görebilirsiniz.
Daha fazla bilgi için Hizmetlere genel bakış ve Sınır hizmetlere genel bakış sayfalarına göz atın.
İzinler
Bir NETWORK_PROVIDER
veya GPS_PROVIDER
dosyasından konum güncellemeleri almak için Android manifest dosyanızda ACCESS_COARSE_LOCATION
veya ACCESS_FINE_LOCATION
iznini beyan ederek kullanıcıdan izin istemeniz gerekir. Uygulamanız, bu izinler olmadan çalışma zamanında konuma erişim isteğinde bulunamaz.
Bu izinler, uygulamanızın Android 10 veya sonraki bir sürümü çalıştıran bir cihazda kullanıldığı Yalnızca bir kez ve Yalnızca uygulamayı kullanırken izin ver durumlarını kapsar.
Konum
Uygulamanız, com.google.android.gms.location
paketindeki sınıflar aracılığıyla desteklenen konum hizmetleri grubuna erişebilir.
Temel dersleri inceleyin:
FusedLocationProviderClient
- Bu, konum çerçevesinin temel bileşenidir. Oluşturulduktan sonra konum güncellemeleri istemek ve bilinen son konumu almak için bu uygulamayı kullanırsınız.
LocationRequest
- Bu, istekler için hizmet kalitesi parametrelerini (güncellemeler, öncelikler ve doğruluk aralıkları) içeren bir veri nesnesidir. Konum güncellemesi isteğinde bulunduğunuzda bu ileti,
FusedLocationProviderClient
bölümüne iletilir. LocationCallback
- Bu özellik, cihaz konumu değiştiğinde veya artık belirlenemediğinde bildirim almak için kullanılır. Bu kontrolde
LocationResult
geçti. Burada, veritabanınıza kaydetmek içinLocation
'i alabilirsiniz.
Ne yaptığınıza dair temel bir fikriniz olduğuna göre artık kodla başlayabilirsiniz.
4. Konum özellikleri ekleme
Bu codelab'de, en yaygın konum seçeneğine odaklanır: Yalnızca uygulama kullanılırken izin ver.
Konum güncellemelerini almak için uygulamanızda görünür bir etkinlik veya ön planda çalışan bir hizmet (bildirim içeren) olmalıdır.
İzinler
Bu codelab'in amacı konum izninin nasıl isteneceğini değil, konum güncellemelerini nasıl alacağınızı göstermektir. Bu nedenle, izne dayalı kod sizin için önceden yazılmıştır. Anladıysanız bu kısmı atlayabilirsiniz.
İzinlerle ilgili öne çıkan noktalar aşağıda verilmiştir (bu bölümde herhangi bir işlem yapılması gerekmez):
- Kullandığınız izni
AndroidManifest.xml
içinde beyan edin. - Konum bilgilerine erişmeye çalışmadan önce, kullanıcının uygulamanıza izin verip vermediğini kontrol edin. Uygulamanız henüz izin almadıysa erişim isteyin.
- Kullanıcının izin seçimini işleyin. (Bu kodu
MainActivity.kt
içinde görebilirsiniz.)
AndroidManifest.xml
veya MainActivity.kt
içinde TODO: Step 1.0, Review Permissions
için arama yaparsanız izinler için yazılan tüm kodları görürsünüz.
Daha fazla bilgi için İzinlere genel bakış başlıklı makaleyi inceleyin.
Şimdi bir konum kodu yazmaya başlayın.
Konum güncellemeleri için gereken temel değişkenleri inceleyin
base
modülünde, TODO: Step 1.1, Review variables
ForegroundOnlyLocationService.kt
dosyası yükleyin.
Bu adımda herhangi bir işlem yapmanız gerekmez. Konum güncellemelerini almak için kullandığınız temel sınıfları ve değişkenleri anlamak için aşağıdaki kod bloğunu ve yorumları incelemeniz yeterlidir.
// TODO: Step 1.1, Review variables (no changes).
// FusedLocationProviderClient - Main class for receiving location updates.
private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
// LocationRequest - Requirements for the location updates, i.e., how often you
// should receive updates, the priority, etc.
private lateinit var locationRequest: LocationRequest
// LocationCallback - Called when FusedLocationProviderClient has a new Location.
private lateinit var locationCallback: LocationCallback
// Used only for local storage of the last known location. Usually, this would be saved to your
// database, but because this is a simplified sample without a full database, we only need the
// last location to create a Notification if the user navigates away from the app.
private var currentLocation: Location? = null
FusedLocationProviderClient başlatmayı inceleme
base
modülünde, ForegroundOnlyLocationService.kt
dosyasında TODO: Step 1.2, Review the FusedLocationProviderClient
öğesini arayın. Kodunuz aşağıdaki gibi görünmelidir:
// TODO: Step 1.2, Review the FusedLocationProviderClient.
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
Önceki yorumlarda da belirtildiği gibi, konum güncellemelerini almak için ana sınıf budur. Değişken sizin için zaten başlatıldı ancak nasıl başlatıldığını anlamak için kodu incelemeniz önemlidir. Konum güncellemelerini istemek için daha sonra buraya bazı kodlar eklersiniz.
LocationRequest'i başlatma
base
modülünde,ForegroundOnlyLocationService.kt
dosyasındaTODO: Step 1.3, Create a LocationRequest
öğesini arayın.- Yorumun arkasına aşağıdaki kodu ekleyin.
LocationRequest
başlatma kodu, isteğiniz için ihtiyaç duyduğunuz ek hizmet parametrelerinin kalitesini (aralıklar, maksimum bekleme süresi ve öncelik) ekler.
// TODO: Step 1.3, Create a LocationRequest.
locationRequest = LocationRequest.create().apply {
// Sets the desired interval for active location updates. This interval is inexact. You
// may not receive updates at all if no location sources are available, or you may
// receive them less frequently than requested. You may also receive updates more
// frequently than requested if other applications are requesting location at a more
// frequent interval.
//
// IMPORTANT NOTE: Apps running on Android 8.0 and higher devices (regardless of
// targetSdkVersion) may receive updates less frequently than this interval when the app
// is no longer in the foreground.
interval = TimeUnit.SECONDS.toMillis(60)
// Sets the fastest rate for active location updates. This interval is exact, and your
// application will never receive updates more frequently than this value.
fastestInterval = TimeUnit.SECONDS.toMillis(30)
// Sets the maximum time when batched location updates are delivered. Updates may be
// delivered sooner than this interval.
maxWaitTime = TimeUnit.MINUTES.toMillis(2)
priority = LocationRequest.PRIORITY_HIGH_ACCURACY
}
- İşleyiş şeklini anlamak için yorumları okuyun.
LocationCallback'i başlatma
base
modülünde,ForegroundOnlyLocationService.kt
dosyasındaTODO: Step 1.4, Initialize the LocationCallback
öğesini arayın.- Yorumun arkasına aşağıdaki kodu ekleyin.
// TODO: Step 1.4, Initialize the LocationCallback.
locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult) {
super.onLocationResult(locationResult)
// Normally, you want to save a new location to a database. We are simplifying
// things a bit and just saving it as a local variable, as we only need it again
// if a Notification is created (when the user navigates away from app).
currentLocation = locationResult.lastLocation
// Notify our Activity that a new location was added. Again, if this was a
// production app, the Activity would be listening for changes to a database
// with new locations, but we are simplifying things a bit to focus on just
// learning the location side of things.
val intent = Intent(ACTION_FOREGROUND_ONLY_LOCATION_BROADCAST)
intent.putExtra(EXTRA_LOCATION, currentLocation)
LocalBroadcastManager.getInstance(applicationContext).sendBroadcast(intent)
// Updates notification content if this service is running as a foreground
// service.
if (serviceRunningInForeground) {
notificationManager.notify(
NOTIFICATION_ID,
generateNotification(currentLocation))
}
}
}
Burada oluşturduğunuz LocationCallback
, yeni bir konum güncellemesi mevcut olduğunda FusedLocationProviderClient
tarafından geri aranmak için kullanılır.
Geri çağırmanızda, önce bir LocationResult
nesnesi kullanarak en son konumu alırsınız. Sonrasında, yerel bir yayın kullanarak (etkinse) Activity
cihazınıza yeni konumu bildirirsiniz veya bu hizmet ön plan Service
olarak çalışıyorsa Notification
öğesini güncellersiniz.
- Bölümlerin ne işe yaradığını anlamak için yorumları baştan sona okuyun.
Konum değişikliklerine abone olma
Her şeyi başlattığınıza göre, güncellemeleri almak istediğinizi FusedLocationProviderClient
cihazına bildirmeniz gerekir.
base
modülünde,ForegroundOnlyLocationService.kt
dosyasındaStep 1.5, Subscribe to location changes
öğesini arayın.- Yorumun arkasına aşağıdaki kodu ekleyin.
// TODO: Step 1.5, Subscribe to location changes.
fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper())
requestLocationUpdates()
çağrısı, konum güncellemelerini almak istediğinizi FusedLocationProviderClient
uygulamasına bildirir.
Muhtemelen daha önce tanımladığınız LocationRequest
ve LocationCallback
terimlerini tanırsınız. Bunlar, FusedLocationProviderClient
ürününe isteğinizin hizmet kalitesi parametrelerini ve güncelleme olduğunda nasıl bir arama yapması gerektiğini bildirir. Son olarak, Looper
nesnesi geri çağırma için iş parçacığını belirtir.
Bu kodun bir try/catch
ifadesinde de olduğunu fark edebilirsiniz. Uygulamanızın konum bilgilerine erişim izni olmadığında SecurityException
hatası oluştuğundan bu yöntem için böyle bir engelleme gerekir.
Konum değişiklikleri için e-posta listesinden çıkma
Uygulamanın konum bilgilerine artık erişmesi gerekmediğinde, konum güncellemeleri aboneliğinden çıkmak önemlidir.
base
modülünde,ForegroundOnlyLocationService.kt
dosyasındaTODO: Step 1.6, Unsubscribe to location changes
öğesini arayın.- Yorumun arkasına aşağıdaki kodu ekleyin.
// TODO: Step 1.6, Unsubscribe to location changes.
val removeTask = fusedLocationProviderClient.removeLocationUpdates(locationCallback)
removeTask.addOnCompleteListener { task ->
if (task.isSuccessful) {
Log.d(TAG, "Location Callback removed.")
stopSelf()
} else {
Log.d(TAG, "Failed to remove Location Callback.")
}
}
removeLocationUpdates()
yöntemi, LocationCallback
cihazınızla ilgili konum güncellemelerini artık almak istemediğinizi FusedLocationProviderClient
bildirmek için bir görev oluşturur. addOnCompleteListener()
, tamamlanması için geri çağırmayı sağlar ve Task
işlemini yürütür.
Önceki adımda olduğu gibi, bu kodun bir try/catch
ifadesinde olduğunu fark etmiş olabilirsiniz. Uygulamanızın konum bilgilerine erişim izni olmadığında SecurityException
hatası oluştuğundan bu yöntem için böyle bir engelleme gerekir
Abonelik/abonelikten çıkma kodunu içeren yöntemlerin ne zaman çağrıldığını merak ediyor olabilirsiniz. Kullanıcı düğmeye dokunduğunda ana sınıfta bu düğmeler tetiklenir. Görmek istiyorsanız MainActivity.kt
sınıfına göz atın.
Uygulamayı çalıştırın
Uygulamanızı Android Studio'dan çalıştırıp konum düğmesini deneyin.
Çıkış ekranında konum bilgilerini göreceksiniz. Bu, Android 9 için tamamen işlevsel bir uygulamadır.
5. Android 10'u destekleyin
Bu bölümde Android 10 desteğini ekleyeceksiniz.
Uygulamanız konum değişikliklerine zaten abone olduğu için yapılacak çok fazla şey yok.
Aslında tek yapmanız gereken, ön plan hizmetinizin konum amacıyla kullanıldığını belirtmektir.
Hedef SDK 29
base
modülünde,build.gradle
dosyasındaTODO: Step 2.1, Target Android 10 and then Android 11.
öğesini arayın.- Şu değişiklikleri yapın:
targetSdkVersion
değerini29
olarak ayarlayın.
Kodunuz aşağıdaki gibi görünmelidir:
android {
// TODO: Step 2.1, Target Android 10 and then Android 11.
compileSdkVersion 29
defaultConfig {
applicationId "com.example.android.whileinuselocation"
minSdkVersion 26
targetSdkVersion 29
versionCode 1
versionName "1.0"
}
...
}
Bunu yaptıktan sonra projenizi senkronize etmeniz istenir. Şimdi Senkronize Et'i tıklayın.
Sonrasında uygulamanız Android 10 için neredeyse hazır olur.
Ön Plan Hizmet Türü Ekle
Android 10'da kullanımdayken konuma erişmeniz gerekiyorsa ön plan hizmetinizin türünü eklemeniz gerekir. Sizin durumunuzda, konum bilgilerini almak için bu kimlik kullanılır.
base
modülünde, AndroidManifest.xml
içinde TODO: 2.2, Add foreground service type
öğesini arayın ve şu kodu <service>
öğesine ekleyin:
android:foregroundServiceType="location"
Kodunuz aşağıdaki gibi görünmelidir:
<application>
...
<!-- Foreground services in Android 10+ require type. -->
<!-- TODO: 2.2, Add foreground service type. -->
<service
android:name="com.example.android.whileinuselocation.ForegroundOnlyLocationService"
android:enabled="true"
android:exported="false"
android:foregroundServiceType="location" />
</application>
İşte bu kadar. Uygulamanız "kullanımdayken" için Android 10 konumunu destekliyor Android'de konumla ilgili en iyi uygulamaları takip edin.
Uygulamayı çalıştırın
Uygulamanızı Android Studio'dan çalıştırıp konum düğmesini deneyin.
Her şey daha önce olduğu gibi çalışıyor. Şimdi ise Android 10'da çalışıyor. Daha önce konumlar için izinleri kabul etmediyseniz şimdi izin ekranını görmeniz gerekir!
6. Android 11'i destekleyin
Bu bölümde Android 11'i hedefleyeceksiniz.
İyi bir haberimiz var! build.gradle
dosyası dışındaki dosyalarda değişiklik yapmanız gerekmez.
Hedef SDK 11
base
modülünde,build.gradle
dosyasındaTODO: Step 2.1, Target SDK
ifadesini arayın.- Şu değişiklikleri yapın:
compileSdkVersion
-30
targetSdkVersion
-30
Kodunuz aşağıdaki gibi görünmelidir:
android {
TODO: Step 2.1, Target Android 10 and then Android 11.
compileSdkVersion 30
defaultConfig {
applicationId "com.example.android.whileinuselocation"
minSdkVersion 26
targetSdkVersion 30
versionCode 1
versionName "1.0"
}
...
}
Bunu yaptıktan sonra projenizi senkronize etmeniz istenir. Şimdi Senkronize Et'i tıklayın.
Sonrasında uygulamanız Android 11'e hazırdır.
Uygulamayı çalıştırın
Uygulamanızı Android Studio'dan çalıştırın ve düğmeyi tıklamayı deneyin.
Her şey daha önce olduğu gibi çalışıyor. Şimdi ise Android 11'de çalışıyor. Daha önce konumlar için izinleri kabul etmediyseniz şimdi izin ekranını görmeniz gerekir!
7. Android için konum stratejileri
Uygulamanız, bu codelab'de gösterilen şekillerde konum izinlerini kontrol edip isteyerek cihaz konumu erişim düzeyini başarılı bir şekilde takip edebilir.
Bu sayfada, konum izinleriyle ilgili birkaç temel en iyi uygulama listelenmektedir. Kullanıcılarınızın Verilerin güvenliğini sağlamak için Uygulama izinleri en iyi uygulamaları başlıklı makaleyi inceleyin.
Yalnızca ihtiyacınız olan izinleri isteyin
Yalnızca gerektiğinde izin isteyin. Örneğin:
- Kesinlikle gerekli olmadığı sürece uygulama başlatılırken konum izni istemeyin.
- Uygulamanız Android 10 veya sonraki sürümleri hedefliyorsa ve ön plan hizmetiniz varsa manifest dosyasında
foregroundServiceType
olarak"location"
belirtin. - Kullanıcı Konumuna Daha Güvenli ve Şeffaf Erişim başlıklı makalede açıklanan geçerli bir kullanım alanınız olmadığı sürece arka planda konum izinleri istemeyin.
İzin verilmezse kontrollü azalmayı destekleme
İyi bir kullanıcı deneyimi sağlamak için uygulamanızı aşağıdaki durumları sorunsuz bir şekilde ele alabilecek şekilde tasarlayın:
- Uygulamanızın konum bilgilerine erişimi yok.
- Uygulamanız arka planda çalışırken konum bilgilerine erişemez.
8. Tebrikler
En iyi uygulamaları göz önünde bulundurarak Android'de konum güncellemelerini nasıl alacağınızı öğrendiniz.
Daha fazla bilgi
- Geçerli bir kullanım alanınız varsa arka planda konum kullanımı için tam örnek
- Konum güncellemesi isteme