Android 14'ten (API düzeyi 34) itibaren her ön plan hizmeti için uygun bir hizmet türü belirtmeniz gerekir. Bu nedenle, uygulama manifest dosyanızda hizmet türünü belirtmeniz ve FOREGROUND_SERVICE
iznini istemenin yanı sıra bu tür için uygun ön plan hizmet iznini de istemeniz gerekir. Ayrıca, ön plan hizmet türüne bağlı olarak
hizmeti başlatmadan önce çalışma zamanında istenen izinleri istemeniz gerekir.
Kamera
- 要在
android:foregroundServiceType
下于清单中声明的前台服务类型 camera
- 在清单中声明的权限
FOREGROUND_SERVICE_CAMERA
- 要传递给
startForeground()
的常量 FOREGROUND_SERVICE_TYPE_CAMERA
- 运行时前提条件
请求并获得
CAMERA
运行时权限- 说明
继续在后台使用摄像头,例如视频聊天应用 支持多任务处理
Bağlı cihaz
- 要在其清单中声明的前台服务类型
android:foregroundServiceType
connectedDevice
- 在清单中声明的权限
FOREGROUND_SERVICE_CONNECTED_DEVICE
- 要传递给
startForeground()
的常量 FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE
- 运行时前提条件
必须至少满足以下其中一个条件:
在清单中至少声明以下其中一项权限:
请求并获得以下至少一项运行时权限:
- 说明
与需要蓝牙、NFC、IR、USB 或网络连接的外部设备进行互动。
- 替代方案
如果您的应用需要持续将数据传输到外部设备,请考虑改用配套设备管理器。使用配套设备在线状态 API 帮助您的应用在配套设备在范围内时保持运行。
如果您的应用需要扫描蓝牙设备,请考虑改用 Bluetooth Scanner API。
Veri senkronizasyonu
- Manifest dosyasında tanımlanacak ön plan hizmet türü
android:foregroundServiceType
dataSync
- Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_DATA_SYNC
startForeground()
noktasına ulaşılmasına kalan süreFOREGROUND_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
- Ağ üzerinden bir cihaz ile bulut arasında veri aktarma
- Alternatifler
Veri senkronizasyonu ön plan hizmetlerine alternatifler bölümüne bakın inceleyebilirsiniz.
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 iletilecek sabit değerFOREGROUND_SERVICE_TYPE_HEALTH
- Çalışma zamanı ön koşulları
Aşağıdaki koşullardan en az biri doğru olmalıdır:
Manifest'inizde
HIGH_SAMPLING_RATE_SENSORS
iznini beyan edin.Aşağıdaki çalışma zamanı izinlerinden en az birini talep edin ve alın:
- 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ğerFOREGROUND_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 aşağıdaki altında beyan edilecek ön plan hizmet türü
android:foregroundServiceType
mediaPlayback
- Manifest'inizde beyan etme izni
FOREGROUND_SERVICE_MEDIA_PLAYBACK
startForeground()
noktasına ulaşılmasına kalan süreFOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
- Çalışma zamanı ön koşulları
- Yok
- Açıklama
Ses veya video oynatmaya arka planda devam edin. Dijital Video Desteği Android TV'de kayıt (DVR) işlevi.
- Alternatifler
Pencere içinde pencere video gösteriyorsanız Pencere içinde pencere modunu kullanın.
Medya işleniyor
- Manifestte bildirilecek ön plan hizmeti türü
android:foregroundServiceType
mediaProcessing
- Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_MEDIA_PROCESSING
startForeground()
için sabit geçişFOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING
- Çalışma zamanı ön koşulları
- Hiçbiri
- Açıklama
Medya öğelerini farklı biçimlere dönüştürme gibi medya öğeleri üzerinde zaman alan işlemler gerçekleştirme hizmeti. Sistem bu hizmetin sınırlı bir süre çalışmasına izin verir. Normal koşullarda, bu süre sınırı her 24 saatten 6 saat olabilir. (Bu sınır, bir 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 bir hata durumuna ulaştığında, hizmeti tamamen durdurmak için
Service.stopForeground()
veService.stopSelf()
numaralı telefonu arayın.
- Kod dönüştürme işlemi tamamlandığında veya bir hata durumuna ulaştığında, hizmeti tamamen durdurmak için
Zaman aşımı süresine ulaşılırsa sistem, hizmetin
Service.onTimeout(int, int)
yöntemini çağırır. Şu anda hizmetinService.stopSelf()
'i çağırması için birkaç saniyesi vardır. HizmetService.stopSelf()
yöntemini çağırmıyorsa şu hata mesajıyla birlikte bir ANR oluşur: "<fgs_type> için ön plan hizmeti, zaman aşımı süresi 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 almak için beklememelidir. Bunun yerine, uygun olan en kısa sürede ön plan hizmetini sonlandırmalı veya bir arka plan hizmetine değiştirmelidir.
Medya projeksiyonu
- Manifest dosyasında aşağıdaki altında beyan edilecek ön plan hizmet türü
android:foregroundServiceType
mediaProjection
- Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_MEDIA_PROJECTION
startForeground()
işlevine iletilecek sabit değerFOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- Çalışma zamanı ön koşulları
Başlamadan önce
createScreenCaptureIntent()
yöntemini çağırın ön plan hizmetini kullanabilirsiniz. Bu işlem, kullanıcıya bir izin bildirimi gösterir. Hizmeti oluşturabilmeniz için kullanıcının izin vermesi gerekir.Ön plan hizmetini oluşturduktan sonra
MediaProjectionManager.getMediaProjection()
.- Açıklama
Şunu kullanarak içeriği birincil olmayan ekrana veya harici cihaza yansıtın:
MediaProjection
API'ler. Bu içeriklerin yalnızca medya içeriği olması gerekmez.- Alternatifler
Medyayı başka bir cihaza aktarmak için Google Cast SDK'sını kullanın.
Mikrofon
- Manifest dosyasında tanımlanacak ön plan hizmet türü
android:foregroundServiceType
microphone
- Manifest'inizde beyan etme izni
FOREGROUND_SERVICE_MICROPHONE
startForeground()
işlevine iletilecek sabit değerFOREGROUND_SERVICE_TYPE_MICROPHONE
- Çalışma zamanı ön koşulları
RECORD_AUDIO
çalışma zamanı iznini isteyin ve izni alın.- Açıklama
Ses kaydediciler veya iletişim uygulamaları gibi mikrofon kayıtlarına arka planda devam edin.
Sesli arama
- Manifest dosyasında aşağıdaki altında beyan edilecek ön plan hizmet türü
android:foregroundServiceType
phoneCall
- Manifest'inizde beyan etme izni
FOREGROUND_SERVICE_PHONE_CALL
startForeground()
noktasına ulaşılmasına kalan süreFOREGROUND_SERVICE_TYPE_PHONE_CALL
- Çalışma zamanı ön koşulları
Aşağıdaki koşullardan en az biri doğru olmalıdır:
- Uygulama, manifest dosyasında
MANAGE_OWN_CALLS
iznini beyan etti. dosyası olarak kaydedebilirsiniz.
- Uygulama, manifest dosyasında
- Uygulama,
ROLE_DIALER
rolü aracılığıyla varsayılan çevirici uygulamasıdır.
- Uygulama,
- Açıklama
ConnectionService
API'lerini kullanarak devam eden bir görüşmeye devam edin.- Alternatifler
Telefon, görüntülü görüşme veya VoIP araması yapmanız gerekiyorsa
android.telecom
kitaplığını kullanabilirsiniz.Aramaları filtrelemek için
CallScreeningService
kullanabilirsiniz.
Uzaktan mesajlaşma
- Manifestte bildirilecek ön plan hizmeti türü
android:foregroundServiceType
remoteMessaging
- Manifest dosyanızda beyan etme izni
FOREGROUND_SERVICE_REMOTE_MESSAGING
startForeground()
için sabit geçişFOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING
- Çalışma zamanı ön koşulları
- Hiçbiri
- Açıklama
- Kısa mesajları bir cihazdan diğerine aktarın. Cihaz değiştirdiğinde kullanıcıların mesajlaşma görevlerinin devam etmesine yardımcı olur.
Kısa servis
- 要在其清单中声明的前台服务类型
android:foregroundServiceType
shortService
- 在清单中声明的权限
- 无
- 要传递给
startForeground()
的常量 FOREGROUND_SERVICE_TYPE_SHORT_SERVICE
- 运行时前提条件
- 无
- 说明
快速完成不可中断或推迟的关键工作。
这种类型有一些独特的特征:
- 只能持续运行一小段时间(大约 3 分钟)。
- 不支持粘性前台服务。
- 无法启动其他前台服务。
- 不需要类型专用权限,不过它仍需要
FOREGROUND_SERVICE
权限。 - 只有当应用当前有资格启动新的前台服务时,
shortService
才能更改为另一种服务类型。 - 前台服务可以随时将其类型更改为
shortService
,届时超时期限将开始。
shortService 的超时时间从调用
Service.startForeground()
开始算起。应用应在发生超时之前调用Service.stopSelf()
或Service.stopForeground()
。否则,系统会调用新的Service.onTimeout()
,让应用有机会调用stopSelf()
或stopForeground()
来停止其服务。调用
Service.onTimeout()
后的短时间内,应用会进入缓存状态,并且不再被视为处于前台,除非用户正在主动与应用互动。应用缓存一小段时间后,服务还未停止,该应用会收到 ANR 消息。ANR 消息提及FOREGROUND_SERVICE_TYPE_SHORT_SERVICE
。出于这些原因,实现Service.onTimeout()
回调被视为一种最佳实践。Android 13 及更低版本中不存在
Service.onTimeout()
回调。如果同一服务在此类设备上运行,则不会出现超时,也不会发生 ANR。确保您的服务在完成处理任务后立即停止,即使它尚未收到Service.onTimeout()
回调也是如此。请务必注意,如果未遵循
shortService
的超时设置,即使应用还有其他有效的前台服务或其他应用生命周期进程,应用也会遇到 ANR。如果应用对用户可见,或满足允许从后台启动前台服务的某一豁免条件,则使用
FOREGROUND_SERVICE_TYPE_SHORT_SERVICE
参数再次调用Service.StartForeground()
会将超时时间再延长 3 分钟。如果应用对用户不可见且不满足其中一个豁免条件,则尝试启动其他前台服务(无论其类型如何)都会导致ForegroundServiceStartNotAllowedException
。即使用户为您的应用停用电池优化功能,仍然会受到 shortService FGS 的影响。
如果您启动包含
shortService
类型和另一个前台服务类型的前台服务,系统会忽略shortService
类型声明。不过,该服务仍必须遵守其他声明类型的前提条件。如需了解详情,请参阅前台服务文档。
Ö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üreFOREGROUND_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 belgeler serbest biçimli olmalıdır ve bunun için yeterli miktarda incelemecininspecialUse
öğ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 muaf
- 要在其清单中声明的前台服务类型
android:foregroundServiceType
systemExempted
- 在清单中声明的权限
FOREGROUND_SERVICE_SYSTEM_EXEMPTED
- 要传递给
startForeground()
的常量 FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
- 运行时前提条件
- 无
- 说明
为系统应用和特定系统集成预留,以便继续使用前台服务。
如需使用此类型,应用必须至少满足以下条件之一:
- 设备处于演示模式状态
- 应用是设备所有者
- 应用是性能分析器所有者
- 属于具有
ROLE_EMERGENCY
角色的安全应用 - 属于设备管理应用
- 具有
SCHEDULE_EXACT_ALARM
或USE_EXACT_ALARM
权限的应用 VPN 应用(通过设置 > 网络和互联网 > VPN 进行配置)
否则,声明此类型会导致系统抛出
ForegroundServiceTypeNotAllowedException
。
Ön plan hizmet türlerinin kullanımıyla ilgili Google Play politika 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.