Ön plan hizmeti türleri

Android 14 (API düzeyi 34) sürümünden itibaren, her ön plan hizmeti için uygun bir hizmet türü beyan etmeniz gerekir. Bu nedenle, hizmet türünü uygulama manifestinizde belirtmeniz ve FOREGROUND_SERVICE iznini istemenin yanı sıra bu tür için uygun ön plan hizmeti iznini de istemeniz gerekir. Ayrıca, ön plan hizmet türüne bağlı olarak hizmeti başlatmadan önce çalışma zamanı izinleri istemeniz gerekebilir.

Kamera

Manifest'te android:foregroundServiceType altında beyan edilecek ön plan hizmeti türü
camera
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_CAMERA
startForeground()'ya aktarılacak sabit
FOREGROUND_SERVICE_TYPE_CAMERA
Çalışma zamanı ön koşulları

CAMERA çalışma zamanı iznini isteyip bu iznin verilmesi

Açıklama

Kameraya arka planda erişmeye devam edin. Örneğin, çoklu görev gerçekleştirmeye izin veren görüntülü sohbet uygulamaları.

Bağlı cihaz

Manifest dosyasında aşağıdaki altında beyan edilecek ön plan hizmet türü
android:foregroundServiceType
connectedDevice
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_CONNECTED_DEVICE
startForeground() işlevine iletilecek sabit değer
FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE
Çalışma zamanı ön koşulları

Aşağıdaki koşullardan en az biri doğru olmalıdır:

Açıklama

Bluetooth, NFC, IR, USB veya ağ bağlantısı gerektiren harici cihazlarla olan etkileşimler.

Alternatifler

Uygulamanızın harici bir cihaza sürekli veri aktarması gerekiyorsa bunun yerine companion device manager'ı kullanabilirsiniz. Tamamlayıcı cihaz kapsam içindeyken uygulamanızın çalışmaya devam etmesine yardımcı olmak için tamamlayıcı cihaz varlığı API'sini kullanın.

Uygulamanızın Bluetooth cihazları taraması gerekiyorsa bunun yerine Bluetooth tarama API'sini kullanabilirsiniz.

Veri senkronizasyonu

Manifest dosyasında altında beyan edilecek ön plan hizmeti türü
android:foregroundServiceType
dataSync
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_DATA_SYNC
startForeground()'ya aktarılacak sabit
FOREGROUND_SERVICE_TYPE_DATA_SYNC
Çalışma zamanı ön koşulları
Yok
Açıklama

Aşağıdakiler gibi veri aktarımı işlemleri:

  • Veri yükleme veya indirme
  • Yedekleme ve geri yükleme işlemleri
  • İçe veya dışa aktarma işlemleri
  • Veri getirme
  • Yerel dosya işleme
  • Bir cihaz ile bulut arasında ağ üzerinden veri aktarma
Alternatifler

Ayrıntılı bilgi için Veri senkronizasyonu ön plan hizmetlerine alternatifler başlıklı makaleyi inceleyin.

Sağlık

Manifest dosyasında aşağıdaki altında beyan edilecek ön plan hizmet türü
android:foregroundServiceType
health
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_HEALTH
startForeground() işlevine iletilen sabit değer
FOREGROUND_SERVICE_TYPE_HEALTH
Çalışma zamanı ön koşulları

Aşağıdaki koşullardan en az biri doğru olmalıdır:

Açıklama

Fitness kategorisindeki uygulamaları (ör. egzersiz takipçileri) desteklemek için uzun süredir kullanılan tüm kullanım alanları.

Konum

Manifest dosyasında aşağıdaki altında beyan edilecek ön plan hizmet türü
android:foregroundServiceType
location
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_LOCATION
startForeground() işlevine iletilecek sabit değer
FOREGROUND_SERVICE_TYPE_LOCATION
Çalışma zamanı ön koşulları

Kullanıcının konum hizmetlerini etkinleştirmiş olması ve uygulamaya aşağıdaki çalışma zamanında izinlerden en az biri verilmiş olmalıdır:

Açıklama

Navigasyon ve konum paylaşımı gibi konum erişimi gerektiren uzun süreli kullanım alanları.

Alternatifler

Kullanıcı belirli konumlara ulaştığında uygulamanızın tetiklenmesi gerekiyorsa bunun yerine coğrafi çit API'sini kullanabilirsiniz.

Medya

Manifest dosyasında altında beyan edilecek ön plan hizmeti türü
android:foregroundServiceType
mediaPlayback
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_MEDIA_PLAYBACK
startForeground()'ya aktarılacak sabit
FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
Çalışma zamanı ön koşulları
Yok
Açıklama

Ses ve video oynatmaya arka planda devam edin. Android TV'de dijital video kaydı (DVR) işlevini destekleme

Alternatifler

Pencere içinde pencere videosu gösteriyorsanız pencere içinde pencere modunu kullanın.

Medya işleniyor

Manifest dosyasında aşağıdaki altında beyan edilecek ön plan hizmet türü
android:foregroundServiceType
mediaProcessing
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_MEDIA_PROCESSING
startForeground() işlevine iletilecek sabit değer
FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING
Çalışma zamanı ön koşulları
Yok
Açıklama

Medya öğelerinde zaman alan işlemleri (ör. medyayı farklı biçimlere dönüştürme) gerçekleştirmek için kullanılan hizmet. Sistem, bu hizmetin çalışması için sınırlı bir süre tanır. Normal şartlarda bu süre, 24 saatte 6 saattir. (Bu sınır, uygulamanın tüm mediaProcessing ön plan hizmetleri tarafından paylaşılır.)

Uygulamanız, aşağıdaki senaryoda medya işleme hizmetini manuel olarak durdurmalıdır:

  • Kod dönüştürme işlemi tamamlandığında veya hata durumuna ulaştığında, hizmeti tamamen durdurmak için hizmetin Service.stopForeground() ve Service.stopSelf() çağrılarını yapmasını sağlayın.

Zaman aşımı süresine ulaşılırsa sistem, hizmetin Service.onTimeout(int, int) yöntemini çağırır. Bu sırada hizmetin Service.stopSelf()'u araması için birkaç saniye süre vardır. Hizmet Service.stopSelf() çağrısı yapmazsa şu hata mesajıyla birlikte bir ANR meydana gelir: "<fgs_type> ön plan hizmeti, zaman aşımı içinde durmadı: <component_name>".

Not: Service.onTimeout(int, int), Android 14 veya önceki sürümlerde kullanılamaz. Bu sürümleri çalıştıran cihazlarda, bir medya işleme hizmeti zaman aşımı süresine ulaşırsa sistem uygulamayı hemen önbelleğe alır. Bu nedenle, uygulamanız zaman aşımı bildirimi almayı beklememelidir. Bunun yerine, uygun olduğunda ön plan hizmetini sonlandırmalı veya arka plan hizmetine dönüştürmelidir.

Medya projeksiyonu

Manifest dosyasında altında beyan edilecek ön plan hizmeti türü
android:foregroundServiceType
mediaProjection
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_MEDIA_PROJECTION
startForeground()'ya aktarılacak sabit
FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
Çalışma zamanı ön koşulları

Ön plan hizmetini başlatmadan önce createScreenCaptureIntent() yöntemini çağırın. Bu işlem, kullanıcıya bir izin bildirimi gösterir; hizmeti oluşturabilmeniz için kullanıcının izni vermesi gerekir.

Ön plan hizmetini oluşturduktan sonra MediaProjectionManager.getMediaProjection() işlevini çağırabilirsiniz.

Açıklama

İçeriği, MediaProjection API'lerini kullanarak birincil olmayan ekrana veya harici cihaza yansıtın. Bu içerik yalnızca medya içeriği olmak zorunda değildir.

Alternatifler

Başka bir cihaza medya aktarmak için Google Cast SDK'sını kullanın.

Mikrofon

Manifest dosyasında altında beyan edilecek ön plan hizmeti türü
android:foregroundServiceType
microphone
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_MICROPHONE
startForeground()'ya aktarılacak sabit
FOREGROUND_SERVICE_TYPE_MICROPHONE
Çalışma zamanı ön koşulları

RECORD_AUDIO çalışma zamanı iznini isteyin ve bu izin size verilsin.

Açıklama

Ses kaydediciler veya iletişim uygulamaları gibi arka planda mikrofon kaydına devam edin.

Sesli arama

Manifest dosyasında altında beyan edilecek ön plan hizmeti türü
android:foregroundServiceType
phoneCall
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_PHONE_CALL
startForeground()'ya aktarılacak sabit
FOREGROUND_SERVICE_TYPE_PHONE_CALL
Çalışma zamanı ön koşulları

Bu koşullardan en az biri doğru olmalıdır:

  • Uygulama, ROLE_DIALER rolü aracılığıyla varsayılan çevirici uygulamasıdır.
Açıklama

ConnectionService API'lerini kullanarak devam eden bir görüşmeyi sürdürme

Alternatifler

Telefon, video veya VoIP araması yapmanız gerekiyorsa android.telecom kitaplığını kullanabilirsiniz.

Aramaları filtrelemek için CallScreeningService özelliğini kullanabilirsiniz.

Uzaktan mesajlaşma

Manifest dosyasında aşağıdaki altında beyan edilecek ön plan hizmet türü
android:foregroundServiceType
remoteMessaging
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_REMOTE_MESSAGING
startForeground() işlevine iletilecek sabit değer
FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING
Çalışma zamanı ön koşulları
Yok
Açıklama
Kısa mesajları bir cihazdan diğerine aktarın. Cihaz değiştiren kullanıcıların mesajlaşma görevlerine devam etmesine yardımcı olun.

Kısa servis

Manifest dosyasında aşağıdaki altında beyan edilecek ön plan hizmet türü
android:foregroundServiceType
shortService
Manifest dosyanızda beyan etme izni
Yok
startForeground() işlevine iletilecek sabit değer
FOREGROUND_SERVICE_TYPE_SHORT_SERVICE
Çalışma zamanı ön koşulları
Yok
Açıklama

Kesintiye uğratılamayan veya ertelenemeyecek kritik işleri hızlıca tamamlayın.

Bu türün bazı benzersiz özellikleri vardır:

  • Yalnızca kısa bir süre (yaklaşık 3 dakika) çalışabilir.
  • Yapışkan ön plan hizmetleri desteklenmez.
  • Diğer ön plan hizmetleri başlatılamaz.
  • Türe özgü izin gerektirmez ancak FOREGROUND_SERVICE iznini gerektirir.
  • shortService yalnızca uygulama şu anda yeni bir ön plan hizmeti başlatmaya uygunsa başka bir hizmet türüne geçirilebilir.
  • Ön plan hizmetleri, türlerini istedikleri zaman shortService olarak değiştirebilir. Bu durumda zaman aşımı süresi başlar.

shortService için zaman aşımı, Service.startForeground() çağrıldığı andan itibaren başlar. Uygulamanın, zaman aşımı gerçekleşmeden önce Service.stopSelf() veya Service.stopForeground() çağrısını yapması beklenir. Aksi takdirde yeni Service.onTimeout() çağrılır ve uygulamalara, hizmetlerini durdurmak için stopSelf() veya stopForeground()'yi aramak üzere kısa bir fırsat verilir.

Service.onTimeout() çağrıldıktan kısa bir süre sonra uygulama önbelleğe alınmış bir duruma girer ve kullanıcı uygulamayla etkin bir şekilde etkileşimde bulunmadığı sürece artık ön planda olduğu kabul edilmez. Uygulama önbelleğe alındıktan ve hizmet durdurulmadıktan kısa bir süre sonra ANR alır. ANR mesajında FOREGROUND_SERVICE_TYPE_SHORT_SERVICE geçiyor. Bu nedenlerden dolayı, Service.onTimeout() geri çağırma işlevini uygulamak en iyi uygulama olarak kabul edilir.

Service.onTimeout() geri arama işlevi Android 13 ve önceki sürümlerde mevcut değildir. Aynı hizmet bu tür cihazlarda çalışıyorsa zaman aşımı veya ANR almaz. İşleme görevini tamamlar tamamlamaz, henüz Service.onTimeout() geri çağırma almamış olsa bile hizmetinizin durmasını sağlayın.

shortService zaman aşımına uyulmaması durumunda, geçerli başka ön plan hizmetleri veya çalışan başka uygulama yaşam döngüsü süreçleri olsa bile uygulamanın ANR'ye neden olacağını unutmayın.

Bir uygulama kullanıcı tarafından görülebilirse veya ön plan hizmetlerinin arka plandan başlatılmasına izin veren istisnalardan birini karşılıyorsa Service.StartForeground() işlevi FOREGROUND_SERVICE_TYPE_SHORT_SERVICE parametresiyle tekrar çağrılırsa zaman aşımı 3 dakika daha uzatılır. Uygulama kullanıcı tarafından görülmüyorsa ve istisnalardan birini karşılamıyorsa türünden bağımsız olarak başka bir ön plan hizmeti başlatma girişimi ForegroundServiceStartNotAllowedException'a neden olur.

Bir kullanıcı uygulamanız için pil optimizasyonunu devre dışı bırakırsa uygulamanız shortService FGS zaman aşımından etkilenmeye devam eder.

shortService türünü ve başka bir ön plan hizmet türünü içeren bir ön plan hizmeti başlatırsanız sistem, shortService türü bildirimini yoksayar. Ancak hizmet, beyan edilen diğer türlerin ön koşullarına uymaya devam etmelidir. Daha fazla bilgi için Ön plan hizmetleri belgelerine bakın.

Özel kullanım

Manifest dosyasında tanımlanacak ön plan hizmet türü
android:foregroundServiceType
specialUse
Manifest'inizde beyan etme izni
FOREGROUND_SERVICE_SPECIAL_USE
startForeground() noktasına ulaşılmasına kalan süre
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
Çalışma zamanı ön koşulları
Yok
Açıklama

Diğer ön plan hizmeti kapsamı dışındaki geçerli ön plan hizmeti kullanım alanlarını kapsar. ön plan hizmet türleri için kullanılır.

FOREGROUND_SERVICE_TYPE_SPECIAL_USE beyana ek olarak, ön plan hizmet türüyle birlikte, geliştiricilerin kullanım alanlarını manifest'ini kullanabilirsiniz. Bunu yapmak için<property> <service> öğesi. Bu değerler ve karşılık gelen kullanım alanları şunlardır: incelenir. Kullanım sağladığınız örnekler serbest biçimli olmalıdır ve bunun için yeterli miktarda incelemecinin specialUse öğesini neden kullanmanız gerektiğini bilmesi için gerekli bilgileri türü.

<service android:name="fooService" android:foregroundServiceType="specialUse">
  <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
      android:value="explanation_for_special_use"/>
</service>

Sistem tarafından muaf tutuldu

Manifestte bildirilecek ön plan hizmeti türü
android:foregroundServiceType
systemExempted
Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_SYSTEM_EXEMPTED
startForeground() için sabit geçiş
FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
Çalışma zamanı ön koşulları
Hiçbiri
Açıklama

Sistem uygulamaları ve belirli sistem entegrasyonları için ayrılmıştır. Ön plan hizmetlerini kullanmaya devam edebilirsiniz.

Bu türü kullanmak için uygulamanın aşağıdaki ölçütlerden en az birini karşılaması gerekir:

Ön plan hizmeti türlerinin kullanımıyla ilgili Google Play politikası yaptırımı

Uygulamanız Android 14 veya sonraki sürümleri hedefliyorsa uygulamanızın ön plan hizmet türlerini Play Console'un uygulama içeriği sayfasında (Politika > Uygulama içeriği) belirtmeniz gerekir. Play Console'da ön plan hizmet türlerinizi nasıl beyan edeceğiniz hakkında daha fazla bilgi için Ön plan hizmetini ve tam ekran intent şartlarını anlama başlıklı makaleyi inceleyin.