Ö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

要在清单中 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 Scan API

Veri senkronizasyonu

要在清单中声明的前台服务类型,位于
android:foregroundServiceType
dataSync
要在清单中声明的权限
FOREGROUND_SERVICE_DATA_SYNC
要传递给 startForeground() 的常量
FOREGROUND_SERVICE_TYPE_DATA_SYNC
运行时前提条件
说明

数据传输操作,例如:

  • 数据上传或下载
  • 备份和恢复操作
  • 导入或导出操作
  • 获取数据
  • 本地文件处理
  • 通过网络在设备和云端之间传输数据
替代方案

如需了解详情,请参阅数据同步前台服务的替代方案

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

要在清单中的以下位置声明的前台服务类型
android:foregroundServiceType
location
在清单中声明的权限
FOREGROUND_SERVICE_LOCATION
要传递给 startForeground() 的常量
FOREGROUND_SERVICE_TYPE_LOCATION
运行时前提条件

用户必须已启用位置信息服务,并且应用必须至少获得以下一项运行时权限:

说明

需要位置信息使用权的长时间运行的用例,例如导航和位置信息分享。

替代方案

如果您的应用需要在用户到达特定位置时触发,请考虑改用 Geofence API

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

要在清单中的以下位置声明的前台服务类型
android:foregroundServiceType
mediaProcessing
在清单中声明的权限
FOREGROUND_SERVICE_MEDIA_PROCESSING
要传递给 startForeground() 的常量
FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING
运行时前提条件
说明

用于对媒体资源执行耗时的操作(例如将媒体转换为其他格式)的服务。系统允许此服务运行的时间有限;在正常情况下,此时限为每天 24 小时中的 6 小时。(此限制由应用的所有 mediaProcessing 前台服务共享。)

在以下情况下,您的应用应手动停止媒体处理服务:

如果超时期限已到,系统会调用服务的 Service.onTimeout(int, int) 方法。此时,该服务有几秒钟的时间来调用 Service.stopSelf()。如果服务未调用 Service.stopSelf(),则会发生 ANR,并显示以下错误消息:“<fgs_type> 的前台服务未在超时时间内停止:<component_name>”。

注意Service.onTimeout(int, int) 不适用于 Android 14 或更低版本。在搭载这些版本的设备上,如果媒体处理服务达到超时期限,系统会立即缓存应用。因此,您的应用不应等待收到超时通知。相反,它应在适当情况下尽快终止前台服务或将其更改为后台服务。

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çeriğin yalnızca medya içeriği olması gerekmez.

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 verilsin.

Açıklama

Ses kaydediciler veya iletişim uygulamaları gibi arka planda mikrofonla ses yakalamaya 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, manifest dosyasında MANAGE_OWN_CALLS iznini bildirmiş 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

要在清单中的以下位置声明的前台服务类型
android:foregroundServiceType
remoteMessaging
在清单中声明的权限
FOREGROUND_SERVICE_REMOTE_MESSAGING
要传递给 startForeground() 的常量
FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING
运行时前提条件
说明
将短信从一台设备转移到另一台设备。在用户切换设备时,帮助确保用户消息任务的连续性。

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

要在清单中声明的前台服务类型
android:foregroundServiceType
specialUse
在清单中声明的权限
FOREGROUND_SERVICE_SPECIAL_USE
要传递给 startForeground() 的常量
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
运行时前提条件
说明

涵盖其他前台服务类型未涵盖的所有有效前台服务用例。

除了声明 FOREGROUND_SERVICE_TYPE_SPECIAL_USE 前台服务类型之外,开发者还应在清单中声明用例。为此,他们会在 <service> 元素内指定 <property> 元素。这些值和相应的应用场景 。用途 您提供的案例均为自由形式,因此,您应确保提供足够的 相关信息,让审核人员了解您为何需要使用 specialUse 类型。

<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

要在其清单中声明的前台服务类型
android:foregroundServiceType
systemExempted
在清单中声明的权限
FOREGROUND_SERVICE_SYSTEM_EXEMPTED
要传递给 startForeground() 的常量
FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
运行时前提条件
说明

为系统应用和特定系统集成预留,以便继续使用前台服务。

如需使用此类型,应用必须至少满足以下条件之一:

Ön plan hizmeti 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.