語言

ForegroundService 列舉

定義

此列舉支援其成員值的位元組合。

[System.Flags]
public enum ForegroundService
[<System.Flags>]
type ForegroundService = 
繼承
ForegroundService
屬性

欄位

名稱 值 Description
TypeManifest -1

特殊值表示使用清單檔案中設定的所有型別。

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeNone 0

此常數在 API 等級 34 中被棄用。 請勿使用。

預設的前景服務類型如果沒有在清單檔案中設定。 針對 API 層級Build.VERSION_CODES的應用程式。UPSIDE_DOWN_CAKE及之後的版本不應使用此類型,使用此類型呼叫 Service.startForeground(int, android.app.Notification, int)會收到 InvalidForegroundServiceTypeException。

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_NONE

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeDataSync 1

常數對應 R.attr.foregroundServiceType 屬性中的 dataSync。 資料(照片、檔案、帳號)上傳/下載、備份/還原、匯入/匯出、取回,以及裝置與雲端之間的網路傳輸。 此類型從 Android 版本 Build.VERSION_CODES 起有 6 小時的時間限制。VANILLA_ICE_CREAM。 此類前景服務必須在逾時內由 Service.stopSelf()、Context.stopService(android.content.Intent) 或其超載方式停止)。 Service.stopForeground(int) 也能運作,這會將服務降格為「背景」服務,系統很快就會停止該服務。 若服務未在逾時內停止,將呼叫 Service.onTimeout(int, int)。 另外要注意,雖然FOREGROUND_SERVICE_TYPE_DATA_SYNC在 Build.VERSION_CODES 之前的 Android 版本上也能使用。VANILLA_ICE_CREAM,由於 Service.onTimeout(int, int) 在這些版本中不存在,因此永遠不會被呼叫。 因此,開發者必須確保即使這些版本未呼叫 Service.onTimeout(int, int) 也必須停止前台服務。

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeMediaPlayback 2

常數對應於 R.attr.foregroundServiceType 屬性中的 mediaPlayback。 音樂、影片、新聞或其他媒體播放。 從針對 API 層級Build.VERSION_CODES的應用程式開始這種類型前台服務。UPSIDE_DOWN_CAKE及之後,將需要Manifest.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK的許可。

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypePhoneCall 4

Constant 對應於 R.attr.foregroundServiceType 屬性中的 phoneCall。 持續進行的電話、視訊會議或類似互動通訊相關操作。 從針對 API 層級Build.VERSION_CODES的應用程式開始這種類型前台服務。UPSIDE_DOWN_CAKE及之後,則需要Manifest.permission.FOREGROUND_SERVICE_PHONE_CALL權限,並Manifest.permission.MANAGE_OWN_CALLS或持有預設撥號器角色。

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_PHONE_CALL

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeLocation 8

常數對應 R.attr.foregroundServiceType 屬性中的位置。 GPS、地圖、導航位置更新。 從針對 API 層級Build.VERSION_CODES的應用程式開始這種類型前台服務。UPSIDE_DOWN_CAKE及之後,將需要取得Manifest.permission.FOREGROUND_SERVICE_LOCATION許可及以下其中一項權限:Manifest.permission.ACCESS_COARSE_LOCATION、Manifest.permission.ACCESS_FINE_LOCATION。

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_LOCATION

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeConnectedDevice 16

常數對應於 R.attr.foregroundServiceType 屬性中的 connectedDevice。 自動、藍牙、電視或其他裝置的連線、監控與互動。 從針對 API 層級Build.VERSION_CODES的應用程式開始這種類型前台服務。UPSIDE_DOWN_CAKE及之後,將需要取得Manifest.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE權限及以下其中一項權限:Manifest.permission.BLUETOOTH_ADVERTISE、Manifest.permission.BLUETOOTH_CONNECT、Manifest.permission.BLUETOOTH_SCAN、Manifest.permission.CHANGE_NETWORK_STATE、Manifest.permission.CHANGE_WIFI_STATE、Manifest.permission.CHANGE_WIFI_MULTICAST_STATE、Manifest.permission.NFC、Manifest.permission.TRANSMIT_IR,Manifest.permission.UWB_RANGING,Manifest.permission.RANGING,或已被授權存取連接的 USB 裝置或配件。

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeMediaProjection 32

常數對應於 foregroundServiceType 屬性中的 mediaProjection。 要透過 MediaProjection 擷取,應用程式必須啟動一個對應此常數類型的前景服務。 此類型僅應用於媒體投影。 透過 createVirtualDisplay 擷取螢幕內容,方便錄製、在會議中呈現螢幕內容、截圖或其他多種情境。

從針對 API 層級Build.VERSION_CODES的應用程式開始這種類型前台服務。UPSIDE_DOWN_CAKE及之後,需要Manifest.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION權限,且使用者必須允許從此應用程式進行螢幕擷取請求。

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeCamera 64

常數對應 R.attr.foregroundServiceType 屬性中的攝影機。 使用相機裝置或錄影。 針對帶有 targetSDK 版本 Build.VERSION_CODES 的應用程式。R 及以上版本,若未在清單及 Service.startForeground(int, android.app.Notification, int) 中指定此類類型,前景服務將無法存取攝影機。 從針對 API 層級Build.VERSION_CODES的應用程式開始這種類型前台服務。UPSIDE_DOWN_CAKE及之後,將需要權限 Manifest.permission.FOREGROUND_SERVICE_CAMERA 和 Manifest.permission.CAMERA。

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeMicrophone 128

常數對應 R.attr.foregroundServiceType 屬性中的麥克風。 使用麥克風裝置或錄音。 針對帶有 targetSDK 版本 Build.VERSION_CODES 的應用程式。R 及以上版本,若 manifest 及 Service.startForeground(int, android.app.Notification, int) 未指定此類型,前景服務將無法存取麥克風。 從針對 API 層級Build.VERSION_CODES的應用程式開始這種類型前台服務。UPSIDE_DOWN_CAKE及之後,將需要取得Manifest.permission.FOREGROUND_SERVICE_MICROPHONE許可及以下其中一項許可:Manifest.permission.CAPTURE_AUDIO_OUTPUT、Manifest.permission.RECORD_AUDIO。

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeHealth 256

常數對應 R.attr.foregroundServiceType 屬性中的健康狀態。 健康、養生與健身。 來電應用程式必須擁有權限Manifest.permission.FOREGROUND_SERVICE_HEALTH,且以下權限之一:Manifest.permission.ACTIVITY_RECOGNITION、Manifest.permission.HIGH_SAMPLING_RATE_SENSORS。 HealthPermissions.READ_HEART_RATE、HealthPermissions.READ_SKIN_TEMPERATURE、HealthPermissions.READ_OXYGEN_SATURATION、HealthPermissions.READ_BLOOD_PRESSURE、HealthPermissions.READ_HEART_RATE_VARIABILITY、HealthPermissions.READ_RESPIRATORY_RATE、HealthPermissions.READ_VO2_MAX。 需要Manifest.permission.FOREGROUND_SERVICE_HEALTH

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_HEALTH

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeRemoteMessaging 512

常數對應於 R.attr.foregroundServiceType 屬性中的 remoteMessaging。 訊息應用場景是透過本地伺服器在裝置間傳遞訊息。 需要Manifest.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeSystemExempted 1024

常數對應於 R.attr.foregroundServiceType 屬性中的 systemExempted。 該系統豁免了前景服務的使用案例。

請注意,應用程式僅在以下情況下允許使用此類型:應用程式有 UID < Process.FIRST_APPLICATION_UID;應用程式已在 Doze 允許名單上;裝置目前運行於示範模式;裝置擁有者應用程式;個人資料擁有者應用程式;持久應用程式;電信業者特權應用程式;具有 android.app.role.RoleManager#ROLE_EMERGENCY 角色的應用程式;無頭系統應用程式;裝置管理應用程式;主動VPN應用程式;應用程式持有Manifest.permission.SCHEDULE_EXACT_ALARM或Manifest.permission.USE_EXACT_ALARM權限。 需要Manifest.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeShortService 2048

一種用於「短壽命」服務的前景服務類型,對應於清單中 R.attr.foregroundServiceType 屬性中的 shortService。

與其他前台服務類型不同,此類型不綁定特定使用情境,且不需任何特殊權限(除Manifest.permission.FOREGROUND_SERVICE外)。 然而,這種類型有以下限制。 該型有3分鐘的暫停時間。 此類前景服務必須在逾時內由 Service.stopSelf()、Context.stopService(android.content.Intent) 或其超載方式停止)。 Service.stopForeground(int) 也能運作,這會將服務降格為「背景」服務,系統很快就會停止該服務。 若服務未在逾時內停止,將呼叫 Service.onTimeout(int)。 請注意,即使系統呼叫此回撥,也不會自動停止服務。 即使你收到回撥,仍然需要用上述其中一種方式停止服務。 若回撥後服務仍未停止,應用程式將在短暫的寬限期後被宣告為 ANR;此類前景服務無法被「黏性」(見Service.START_STICKY)。 也就是說,如果應用程式在執行短暫的放棄服務時因當機或記憶體不足而被終止,系統不會重新啟動該服務;其他前景服務無法從短前景服務啟動。 與其他前景服務類型不同,當應用程式在背景執行且僅有「短」前景服務時,無法啟動其他前景服務,原因如下:背景啟動限制;你可以用 |s 合併多個前景服務類型,也可以合併 FOREGROUND_SERVICE_TYPE_SHORT_SERVICE。 還有其他類型。 不過,FOREGROUND_SERVICE_TYPE_SHORT_SERVICE是針對沒有其他有效前景服務可用且逾時時間足夠長的情況下,如果能用其他類型,使用這種類型就沒意義。 因此,如果FOREGROUND_SERVICE_TYPE_SHORT_SERVICE 與其他前台服務類型合併,系統會直接忽略它,因此上述限制都不會適用(例如不會有逾時)。

另外要注意,雖然FOREGROUND_SERVICE_TYPE_SHORT_SERVICE 是 Android 版本 Build.VERSION_CODES 加入的。UPSIDE_DOWN_CAKE,它也能在先前的 Android 版本中使用(就像其他新的前景服務類型一樣)。 然而,由於 Service.onTimeout(int) 在先前版本中不存在,因此它永遠不會呼叫這些版本。 因此,開發者必須確保即使未在此類版本中呼叫 Service.onTimeout(int) 也必須停止前景服務。

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_SHORT_SERVICE

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeMediaProcessing 8192

常數對應於 R.attr.foregroundServiceType 屬性中的 mediaProcessing。 媒體處理的應用場景包括影片或照片的編輯與處理。 此類型有6小時的時間限制。 此類前景服務必須在逾時內由 Service.stopSelf()、Context.stopService(android.content.Intent) 或其超載方式停止)。 Service.stopForeground(int) 也能運作,這會將服務降格為「背景」服務,系統很快就會停止該服務。 若服務未在逾時內停止,將呼叫 Service.onTimeout(int, int)。 另外要注意,雖然FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING是在 Android 版本 Build.VERSION_CODES 加入的。VANILLA_ICE_CREAM,它也可以用於先前的 Android 版本(就像其他新的前景服務類型一樣)。 然而,由於 Service.onTimeout(int, int) 在先前版本中不存在,因此在這些版本中永遠不會被呼叫。 因此,開發者必須確保即使這些版本未呼叫 Service.onTimeout(int, int) 也必須停止前台服務。 需要Manifest.permission.FOREGROUND_SERVICE_MEDIA_PROCESSING

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

TypeSpecialUse 1073741824

常數對應 R.attr.foregroundServiceType 屬性中的 specialUse。 這些使用案例無法歸類到其他前台服務類型,也無法使用 JobInfo.Builder API。

此前景服務類型的使用可能會受到限制。 此外,應用程式必須在 AndroidManifest.xml 中宣告服務層級 <屬性> ,作為這裡實際使用情境的提示。

<uses-permission
     android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"
 />
<service
     android:name=".MySpecialForegroundService"
     android:foregroundServiceType="specialUse">
<property
         android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
         android:value="foo"
     />
</service>

在未來的 Android 版本中,如果平台支援上述 foreground service type foo,為了提供向下相容性,應用程式可以在 uses-permission> 區塊指定 android:maxSdkVersion 屬性<,並在 android:foregroundServiceType 中加入 foreground service type foo,因此同一應用程式可同時安裝於兩個平台。

<uses-permission
     android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"
     android:maxSdkVersion="last_sdk_version_without_type_foo"
 />
<service
     android:name=".MySpecialForegroundService"
     android:foregroundServiceType="specialUse|foo">
<property
         android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
         android:value="foo"
     />
</service>

需要Manifest.permission.FOREGROUND_SERVICE_SPECIAL_USE

Android 參考資料。android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於