從 Android 14 (API 級別 34) 開始,您必須為每項前景服務聲明適當的服務類型。也就是說,您必須在應用程式資訊清單中聲明服務類型,並為該類型要求適當的前景服務權限 (除了要求 FOREGROUND_SERVICE 權限外)。此外,視前景服務類型而定,您可能必須先要求執行階段權限,才能啟動服務。
相機
- Foreground service type to declare in manifest under
android:foregroundServiceType camera- Permission to declare in your manifest
FOREGROUND_SERVICE_CAMERA- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_CAMERA- Runtime prerequisites
Request and be granted the
CAMERAruntime permission- Description
Continue to access the camera from the background, such as video chat apps that allow for multitasking.
已連結的裝置
- Foreground service type to declare in manifest under
android:foregroundServiceTypeconnectedDevice- Permission to declare in your manifest
FOREGROUND_SERVICE_CONNECTED_DEVICE- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE- Runtime prerequisites
At least one of the following conditions must be true:
Declare at least one of the following permissions in your manifest:
Request and be granted at least one of the following runtime permissions:
- Description
Interactions with external devices that require a Bluetooth, NFC, IR, USB, or network connection.
- Alternatives
If your app needs to do continuous data transfer to an external device, consider using the companion device manager instead. Use the companion device presence API to help your app stay running while the companion device is in range.
If your app needs to scan for bluetooth devices, consider using the Bluetooth scan API instead.
同步處理資料
- Foreground service type to declare in manifest under
android:foregroundServiceTypedataSync- Permission to declare in your manifest
FOREGROUND_SERVICE_DATA_SYNC- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_DATA_SYNC- Runtime prerequisites
- None
- Description
Data transfer operations, such as the following:
- Data upload or download
- Backup-and-restore operations
- Import or export operations
- Fetch data
- Local file processing
- Transfer data between a device and the cloud over a network
- Alternatives
See Alternatives to data sync foreground services for detailed information.
健康度
- Foreground service type to declare in manifest under
android:foregroundServiceTypehealth- Permission to declare in your manifest
FOREGROUND_SERVICE_HEALTH- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_HEALTH- Runtime prerequisites
At least one of the following conditions must be true:
Declare the
HIGH_SAMPLING_RATE_SENSORSpermission in your manifest.Request and be granted at least one of the following runtime permissions:
BODY_SENSORSon API 35 and lowerREAD_HEART_RATEREAD_SKIN_TEMPERATUREREAD_OXYGEN_SATURATIONACTIVITY_RECOGNITION
- Description
Any long-running use cases to support apps in the fitness category such as exercise trackers.
位置
- Foreground service type to declare in manifest under
android:foregroundServiceTypelocation- Permission to declare in your manifest
FOREGROUND_SERVICE_LOCATION- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_LOCATION- Runtime prerequisites
The user must have enabled location services and the app must be granted at least one of the following runtime permissions:
- Description
Long-running use cases that require location access, such as navigation and location sharing.
- Alternatives
If your app needs to be triggered when the user reaches specific locations, consider using the geofence API instead.
媒體
- Foreground service type to declare in manifest under
android:foregroundServiceTypemediaPlayback- Permission to declare in your manifest
FOREGROUND_SERVICE_MEDIA_PLAYBACK- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK- Runtime prerequisites
- None
- Description
Continue audio or video playback from the background. Support Digital Video Recording (DVR) functionality on Android TV.
- Alternatives
If you're showing picture-in-picture video, use Picture-in-Picture mode.
處理中的媒體項目
- 要在下列資訊清單中宣告的前景服務類型
android:foregroundServiceTypemediaProcessing- 在資訊清單中宣告的權限
FOREGROUND_SERVICE_MEDIA_PROCESSING- 要傳遞至
startForeground()的常數 FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING- 執行階段必要條件
- 無
- 說明
這項服務可在媒體資產上執行耗時的作業,例如將媒體轉換為其他格式。系統會允許這項服務執行的時間有限,在一般情況下,這個時間限制是每 24 小時 6 小時。(這項限制適用於應用程式的所有
mediaProcessing前景服務)。在下列情況下,應用程式應手動停止媒體處理服務:
- 轉碼作業完成或達到失敗狀態時,請讓服務呼叫
Service.stopForeground()和Service.stopSelf(),以便完全停止服務。
- 轉碼作業完成或達到失敗狀態時,請讓服務呼叫
如果逾時,系統會呼叫服務的
Service.onTimeout(int, int)方法。此時,服務有幾秒的時間可以呼叫Service.stopSelf()。如果服務未呼叫Service.stopSelf(),系統會發生 ANR,並顯示以下錯誤訊息:「<fgs_type> 的前景服務未在逾時期限內停止:<component_name>」。注意:
Service.onTimeout(int, int)不適用於 Android 14 以下版本。在執行這些版本的裝置上,如果媒體處理服務達到逾時期限,系統會立即快取應用程式。因此,應用程式不應等待逾時通知。而是應盡快終止前景服務,或將其變更為背景服務。
媒體投影
- Foreground service type to declare in manifest under
android:foregroundServiceTypemediaProjection- Permission to declare in your manifest
FOREGROUND_SERVICE_MEDIA_PROJECTION- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION- Runtime prerequisites
Call the
createScreenCaptureIntent()method before starting the foreground service. Doing so shows a permission notification to the user; the user must grant the permission before you can create the service.After you have created the foreground service, you can call
MediaProjectionManager.getMediaProjection().- Description
Project content to non-primary display or external device using the
MediaProjectionAPIs. This content doesn't have to be exclusively media content.- Alternatives
To stream media to another device, use the Google Cast SDK.
麥克風
- Foreground service type to declare in manifest under
android:foregroundServiceTypemicrophone- Permission to declare in your manifest
FOREGROUND_SERVICE_MICROPHONE- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_MICROPHONE- Runtime prerequisites
Request and be granted the
RECORD_AUDIOruntime permission.- Description
Continue microphone capture from the background, such as voice recorders or communication apps.
語音通話
- 在以下位置的資訊清單中聲明前景服務類型
android:foregroundServiceTypephoneCall- 在資訊清單中宣告的權限
FOREGROUND_SERVICE_PHONE_CALL- 要傳遞至
startForeground()的常數 FOREGROUND_SERVICE_TYPE_PHONE_CALL- 執行階段必要條件
至少必須符合下列其中一項條件:
- 應用程式已在資訊清單檔案中宣告
MANAGE_OWN_CALLS權限。
- 應用程式已在資訊清單檔案中宣告
- 應用程式是透過
ROLE_DIALER角色成為預設撥號應用程式。
。- 應用程式是透過
- 說明
使用
ConnectionServiceAPI 繼續目前的通話。- 替代選項
如需撥打電話、視訊或 VoIP 通話,請考慮使用
android.telecom程式庫。建議使用
CallScreeningService過濾來電。
遠端通訊
- Foreground service type to declare in manifest under
android:foregroundServiceTyperemoteMessaging- Permission to declare in your manifest
FOREGROUND_SERVICE_REMOTE_MESSAGING- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING- Runtime prerequisites
- None
- Description
- Transfer text messages from one device to another. Assists with continuity of a user's messaging tasks when they switch devices.
短程服務
- 要在下列資訊清單中宣告的前景服務類型
android:foregroundServiceTypeshortService- 在資訊清單中宣告的權限
- 無
- 要傳遞至
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()回呼是最佳做法。Service.onTimeout()回呼不存在於 Android 13 及更早版本中。如果在此類裝置上執行相同的服務,則不會收到逾時或收到 ANR。即使服務尚未收到Service.onTimeout()回呼,請確認您的服務在完成處理工作後立即停止。請注意,如果
shortService未遵守逾時條件,則即使應用程式具備其他有效的前景服務或其他執行中的應用程式生命週期程序,仍會發生 ANR。如果應用程式對使用者開放瀏覽權限,或符合任一允許從背景作業啟動前景服務的豁免條件,則使用
FOREGROUND_SERVICE_TYPE_SHORT_SERVICE參數再次呼叫Service.StartForeground(),可再將逾時時間延長 3 分鐘。如果應用程式未對使用者開放瀏覽權限,且未符合任何一項豁免條件,則無論前景服務類型為何,只要嘗試啟動該前景服務,便會導致ForegroundServiceStartNotAllowedException。就算使用者停用應用程式的電池效能最佳化功能,也仍會受到 shortService FGS 逾時的影響。
如果您啟動的前景服務包含
shortService類型和其他前景服務類型,則系統將忽略shortService類型宣告。即便如此,服務仍必須遵守其他宣告類型的先決條件。詳情請參閱前景服務說明文件。
特殊用途
- Foreground service type to declare in manifest under
android:foregroundServiceTypespecialUse- Permission to declare in your manifest
FOREGROUND_SERVICE_SPECIAL_USE- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_SPECIAL_USE- Runtime prerequisites
- None
- Description
Covers any valid foreground service use cases that aren't covered by the other foreground service types.
In addition to declaring the
FOREGROUND_SERVICE_TYPE_SPECIAL_USEforeground service type, developers should declare use cases in the manifest. To do so, they specify the<property>element within the<service>element. These values and corresponding use cases are reviewed when you submit your app in the Google Play Console. The use cases you provide are free-form, and you should make sure to provide enough information to let the reviewer see why you need to use thespecialUsetype.<service android:name="fooService" android:foregroundServiceType="specialUse"> <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE" android:value="explanation_for_special_use"/> </service>
不受規範的系統
- Foreground service type to declare in manifest under
android:foregroundServiceTypesystemExempted- Permission to declare in your manifest
FOREGROUND_SERVICE_SYSTEM_EXEMPTED- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED- Runtime prerequisites
- None
- Description
Reserved for system applications and specific system integrations, to continue to use foreground services.
To use this type, an app must meet at least one of the following criteria:
- Device is in demo mode state
- App is a Device Owner
- App is a Profiler Owner
- Safety Apps that have the
ROLE_EMERGENCYrole - Device Admin apps
- Apps holding
SCHEDULE_EXACT_ALARMorUSE_EXACT_ALARMpermission VPN apps (configured using Settings > Network & Internet > VPN)
Otherwise, declaring this type causes the system to throw a
ForegroundServiceTypeNotAllowedException.
Google Play 對於使用前景服務類型的政策違規處置
如果應用程式指定 Android 14 以上版本為目標,您就需要在 Play 管理中心的「應用程式內容」頁面 (依序點選「政策」>「應用程式內容」) 中,聲明所使用的任何前景服務類型。如要進一步瞭解如何在 Play 管理中心聲明前景服務類型,請參閱「瞭解前景服務和全螢幕意圖規定」。