從 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:foregroundServiceType
- connectedDevice
- 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:foregroundServiceType
- dataSync
- 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:foregroundServiceType
- health
- 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 lower
- READ_HEART_RATE
- READ_SKIN_TEMPERATURE
- READ_OXYGEN_SATURATION
- ACTIVITY_RECOGNITION
 
 
- Description
- Any long-running use cases to support apps in the fitness category such as exercise trackers. 
位置
- 要在資訊清單中宣告的前景服務類型
- android:foregroundServiceType
- location
- 在資訊清單中宣告的權限
- FOREGROUND_SERVICE_LOCATION
- 要傳遞至 startForeground()的常數
- FOREGROUND_SERVICE_TYPE_LOCATION
- 執行階段必要條件
- 使用者必須已啟用定位服務,且應用程式必須獲得下列至少一項執行階段權限: 
- 說明
- 需要位置資訊存取權的長時間執行使用案例,如:導航和位置分享。 
- 替代選項
- 如果應用程式需要在使用者抵達特定地點時觸發,建議改用 地理圍欄 API。 
媒體
- Foreground service type to declare in manifest under
- android:foregroundServiceType
- mediaPlayback
- 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:foregroundServiceType
- mediaProcessing
- 在資訊清單中宣告的權限
- 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:foregroundServiceType
- mediaProjection
- 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. 
麥克風
- 在以下位置的資訊清單中聲明前景服務類型
- android:foregroundServiceType
- microphone
- 在資訊清單中宣告的權限
- FOREGROUND_SERVICE_MICROPHONE
- 要傳遞至 startForeground()的常數
- FOREGROUND_SERVICE_TYPE_MICROPHONE
- 執行階段必要條件
- 要求並取得 - RECORD_AUDIO執行階段權限。
- 說明
- 繼續從背景擷取麥克風,如:錄音工具或通訊應用程式。 
語音通話
- Foreground service type to declare in manifest under
- android:foregroundServiceType
- phoneCall
- Permission to declare in your manifest
- FOREGROUND_SERVICE_PHONE_CALL
- Constant to pass to startForeground()
- FOREGROUND_SERVICE_TYPE_PHONE_CALL
- Runtime prerequisites
- At least one of these conditions must be true: 
- App has declared the MANAGE_OWN_CALLSpermission in its manifest file.
 
- App has declared the 
- App is the default dialer app through the
ROLE_DIALERrole.
 
- App is the default dialer app through the
- Description
- Continue an ongoing call using the - ConnectionServiceAPIs.
- Alternatives
- If you need to make phone, video, or VoIP calls, consider using the - android.telecomlibrary.
- Consider using - CallScreeningServiceto screen calls.
遠端通訊
- Foreground service type to declare in manifest under
- android:foregroundServiceType
- remoteMessaging
- 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.
短程服務
- Foreground service type to declare in manifest under
- android:foregroundServiceType
- shortService
- Permission to declare in your manifest
- None
- Constant to pass to startForeground()
- FOREGROUND_SERVICE_TYPE_SHORT_SERVICE
- Runtime prerequisites
- None
- Description
- Quickly finish critical work that cannot be interrupted or postponed. - This type has some unique characteristics: - Can only run for a short period of time (about 3 minutes).
- No support for sticky foreground services.
- Cannot start other foreground services.
- Doesn't require a type-specific permission, though it still
requires the FOREGROUND_SERVICEpermission.
- A shortServicecan only change to another service type if the app is currently eligible to start a new foreground service.
- A foreground service can change its type to shortServiceat any time, at which point the timeout period begins.
 - The timeout for shortService begins from the moment that - Service.startForeground()is called. The app is expected to call- Service.stopSelf()or- Service.stopForeground()before the timeout occurs. Otherwise, the new- Service.onTimeout()is called, giving apps a brief opportunity to call- stopSelf()or- stopForeground()to stop their service.- A short time after - Service.onTimeout()is called, the app enters a cached state and is no longer considered to be in the foreground, unless the user is actively interacting with the app. A short time after the app is cached and the service has not stopped, the app receives an ANR. The ANR message mentions- FOREGROUND_SERVICE_TYPE_SHORT_SERVICE. For these reasons, it's considered best practice to implement the- Service.onTimeout()callback.- The - Service.onTimeout()callback doesn't exist on Android 13 and lower. If the same service runs on such devices, it doesn't receive a timeout, nor does it ANR. Make sure that your service stops as soon as it finishes the processing task, even if it hasn't received the- Service.onTimeout()callback yet.- It's important to note that if the timeout of the - shortServiceis not respected, the app will ANR even if it has other valid foreground services or other app lifecycle processes running.- If an app is visible to the user or satisfies one of the exemptions that allow foreground services to be started from the background, calling - Service.StartForeground()again with the- FOREGROUND_SERVICE_TYPE_SHORT_SERVICEparameter extends the timeout by another 3 minutes. If the app isn't visible to the user and doesn't satisfy one of the exemptions, any attempt to start another foreground service, regardless of type, causes a- ForegroundServiceStartNotAllowedException.- If a user disables battery optimization for your app, it's still affected by the timeout of shortService FGS. - If you start a foreground service that includes the - shortServicetype and another foreground service type, the system ignores the- shortServicetype declaration. However, the service must still adhere to the prerequisites of the other declared types. For more information, see the Foreground services documentation.
特殊用途
- Foreground service type to declare in manifest under
- android:foregroundServiceType
- specialUse
- 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 the- specialUsetype.- <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:foregroundServiceType
- systemExempted
- 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 對於使用前景服務類型的政策違規處置
If your app targets Android 14 or higher, you'll need to declare your app's foreground service types in the Play Console's app content page (Policy > App content). For more information on how to declare your foreground service types in Play Console, see Understanding foreground service and full-screen intent requirements.
