Ab Android 14 (API-Ebene 34) müssen Sie für jeden Dienst im Vordergrund einen geeigneten Diensttyp deklarieren. Das bedeutet, dass Sie den Diensttyp in Ihrem App-Manifest deklarieren und die entsprechende Berechtigung für Dienste im Vordergrund für diesen Typ anfordern müssen (zusätzlich zur Anforderung der Berechtigung FOREGROUND_SERVICE). Außerdem müssen Sie je nach Diensttyp möglicherweise Laufzeitberechtigungen anfordern, bevor Sie den Dienst starten.
Kamera
- Typ des Diensts im Vordergrund, der im Manifest unter
android:foregroundServiceTypedeklariert werden muss camera- Berechtigung, die im Manifest deklariert werden muss
FOREGROUND_SERVICE_CAMERA- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_CAMERA- Voraussetzungen für die Laufzeit
CAMERA-Laufzeitberechtigung anfordern und erhalten- Beschreibung
Zugriff auf die Kamera im Hintergrund ist weiterhin möglich, z. B. über Videoanruf-Apps, die Multitasking zulassen.
Verbundenes Gerät
- 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.
Datensynchronisierung
- Typ des Diensts im Vordergrund, der im Manifest unter
android:foregroundServiceTypedataSync- Berechtigung, die im Manifest deklariert werden muss
FOREGROUND_SERVICE_DATA_SYNC- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_DATA_SYNC- Voraussetzungen für die Laufzeit
- Keine
- Beschreibung
Vorgänge zur Datenübertragung, z. B.:
- Daten hoch- oder herunterladen
- Sicherungs- und Wiederherstellungsvorgänge
- Import- oder Exportvorgänge
- Daten abrufen
- Lokale Dateiverarbeitung
- Daten über ein Netzwerk zwischen einem Gerät und der Cloud übertragen
- Alternativen
Ausführliche Informationen finden Sie unter Alternativen zu Vordergrunddiensten für die Datensynchronisierung.
Zustand
- 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.
Standort
- 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.
Medien
- Typ des Diensts im Vordergrund, der im Manifest unter
android:foregroundServiceTypemediaPlayback- Berechtigung, die im Manifest deklariert werden muss
FOREGROUND_SERVICE_MEDIA_PLAYBACK- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK- Voraussetzungen für die Laufzeit
- Keine
- Beschreibung
Fortsetzung der Audio‑ oder Videowiedergabe im Hintergrund. Unterstützung der DVR-Funktion (Digital Video Recording) auf Android TV.
- Alternativen
Wenn Sie ein Bild-im-Bild-Video präsentieren, verwenden Sie den Bild-im-Bild-Modus.
Medien werden verarbeitet.
- Foreground service type to declare in manifest under
android:foregroundServiceTypemediaProcessing- Permission to declare in your manifest
FOREGROUND_SERVICE_MEDIA_PROCESSING- Constant to pass to
startForeground() FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING- Runtime prerequisites
- None
- Description
Service for performing time-consuming operations on media assets, like converting media to different formats. The system allows this service a limited time to run; under normal circumstances, this time limit would be 6 hours out of every 24. (This limit is shared by all of an app's
mediaProcessingforeground services.)Your app should manually stop the media processing service in the following scenario:
- When the transcoding operation finishes or reaches a failure state, have the
service call
Service.stopForeground()andService.stopSelf()to stop the service completely.
- When the transcoding operation finishes or reaches a failure state, have the
service call
If the timeout period is reached, the system calls the service's
Service.onTimeout(int, int)method. At this time, the service has a few seconds to callService.stopSelf(). If the service does not callService.stopSelf(), an ANR will occur with this error message: "A foreground service of <fgs_type> did not stop within its timeout: <component_name>".Note:
Service.onTimeout(int, int)is not available on Android 14 or lower. On devices running those versions, if a media processing service reaches the timeout period, the system immediately caches the app. For this reason, your app shouldn't wait to get a timeout notification. Instead, it should terminate the foreground service or change it to a background service as soon as appropriate.
Medienprojektion
- 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.
Mikrofon
- Typ des Diensts im Vordergrund, der im Manifest unter
android:foregroundServiceTypemicrophone- Berechtigung, die im Manifest deklariert werden muss
FOREGROUND_SERVICE_MICROPHONE- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_MICROPHONE- Voraussetzungen für die Laufzeit
Fordern Sie die Laufzeitberechtigung
RECORD_AUDIOan und erhalten Sie sie.- Beschreibung
Mikrofonaufnahmen im Hintergrund fortsetzen, z. B. bei Sprachrekordern oder Kommunikations-Apps.
Telefonanruf
- Typ des Diensts im Vordergrund, der im Manifest unter
android:foregroundServiceTypephoneCall- Berechtigung, die im Manifest deklariert werden muss
FOREGROUND_SERVICE_PHONE_CALL- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_PHONE_CALL- Voraussetzungen für die Laufzeit
Mindestens eine dieser Bedingungen muss erfüllt sein:
- Die App hat die Berechtigung
MANAGE_OWN_CALLSin ihrer Manifestdatei deklariert.
- Die App hat die Berechtigung
- Die App ist die Standard-App fürs Telefonieren über die Rolle
ROLE_DIALER.
- Die App ist die Standard-App fürs Telefonieren über die Rolle
- Beschreibung
Sie können einen laufenden Anruf mit den
ConnectionServiceAPIs fortsetzen.- Alternativen
Wenn Sie Telefon-, Video- oder VoIP-Anrufe starten möchten, sollten Sie die
android.telecom-Bibliothek verwenden.Verwenden Sie
CallScreeningService, um Anrufe zu filtern.
Remote-Messaging
- Typ des Dienstes im Vordergrund, der im Manifest unter
android:foregroundServiceTyperemoteMessaging- Berechtigung, die in Ihrem Manifest deklariert werden muss
FOREGROUND_SERVICE_REMOTE_MESSAGING- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING- Laufzeitvoraussetzungen
- Keine
- Beschreibung
- Sie können Nachrichten von einem Gerät auf ein anderes übertragen. Unterstützt Nutzer beim Wechseln des Geräts, ohne dass die Messaging-Aufgaben weiter ausgeführt werden.
Kurzer Service
- Typ des Dienstes im Vordergrund, der im Manifest unter
android:foregroundServiceTypeshortService- Berechtigung, die in Ihrem Manifest deklariert werden muss
- Keine
- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_SHORT_SERVICE- Laufzeitvoraussetzungen
- Keine
- Beschreibung
Sie können wichtige Aufgaben, die nicht unterbrochen oder verschoben werden können, schnell erledigen.
Dieser Typ hat einige einzigartige Eigenschaften:
- Kann nur für einen kurzen Zeitraum (ca. 3 Minuten) ausgeführt werden.
- Keine Unterstützung für persistente Dienste im Vordergrund.
- Andere Dienste im Vordergrund können nicht gestartet werden.
- Erfordert keine typspezifische Berechtigung, aber die Berechtigung
FOREGROUND_SERVICE. - Ein
shortServicekann nur zu einem anderen Diensttyp wechseln, wenn die App derzeit berechtigt ist, einen neuen Dienst im Vordergrund zu starten. - Ein Dienst im Vordergrund kann seinen Typ jederzeit in
shortServiceändern. Ab diesem Zeitpunkt beginnt die Zeitüberschreitung.
Das Zeitlimit für shortService beginnt, sobald
Service.startForeground()aufgerufen wird. Die App sollteService.stopSelf()oderService.stopForeground()aufrufen, bevor die Zeitüberschreitung eintritt. Andernfalls wird der neueService.onTimeout()aufgerufen, wodurch Apps kurzzeitig die Möglichkeit haben,stopSelf()oderstopForeground()aufzurufen, um ihren Dienst zu beenden.Kurz nach dem Aufruf von
Service.onTimeout()wechselt die App in den Cache-Status und wird nicht mehr als App im Vordergrund betrachtet, es sei denn, der Nutzer interagiert aktiv mit der App. Kurz nachdem die App im Cache gespeichert wurde und der Dienst nicht beendet wurde, erhält die App eine ANR. In der ANR-Nachricht wirdFOREGROUND_SERVICE_TYPE_SHORT_SERVICEerwähnt. Aus diesen Gründen wird empfohlen, denService.onTimeout()-Callback zu implementieren.Der
Service.onTimeout()-Callback ist unter Android 13 und niedriger nicht vorhanden. Wenn derselbe Dienst auf solchen Geräten ausgeführt wird, erhält er weder ein Zeitlimit noch eine ANR. Der Dienst muss beendet werden, sobald die Verarbeitungsaufgabe abgeschlossen ist, auch wenn derService.onTimeout()-Callback noch nicht empfangen wurde.Wenn das Zeitlimit der
shortServicenicht eingehalten wird, wird für die App ein ANR ausgegeben, auch wenn andere gültige Dienste im Vordergrund oder andere App-Lebenszyklus-Prozesse ausgeführt werden.Wenn eine App für den Nutzer sichtbar ist oder eine der Ausnahmen erfüllt, die es ermöglichen, Dienste im Vordergrund aus dem Hintergrund zu starten, wird die Zeitüberschreitung durch einen erneuten Aufruf von
Service.StartForeground()mit dem ParameterFOREGROUND_SERVICE_TYPE_SHORT_SERVICEum weitere drei Minuten verlängert. Wenn die App für den Nutzer nicht sichtbar ist und keinen der Ausnahmen erfüllt, führt jeder Versuch, einen weiteren Dienst im Vordergrund zu starten, unabhängig vom Typ, zu einerForegroundServiceStartNotAllowedException.Wenn ein Nutzer die Akku-Optimierung für Ihre App deaktiviert, ist sie weiterhin vom Zeitlimit für shortService-FGS betroffen.
Wenn Sie einen Dienst im Vordergrund starten, der den Typ
shortServiceund einen anderen Typ von Dienst im Vordergrund enthält, wird die Deklaration des TypsshortServicevom System ignoriert. Der Dienst muss jedoch weiterhin die Voraussetzungen der anderen angegebenen Typen erfüllen. Weitere Informationen finden Sie in der Dokumentation zu Diensten im Vordergrund.
Spezielle Anwendungsfälle
- 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>
Vom System ausgenommen
- Typ des Dienstes im Vordergrund, der im Manifest deklariert werden soll unter
android:foregroundServiceTypesystemExempted- Deklarierungsberechtigung im Manifest
FOREGROUND_SERVICE_SYSTEM_EXEMPTED- Konstante zur Übergabe an
startForeground() FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED- Laufzeitvoraussetzungen
- Keine
- Beschreibung
Ist für Systemanwendungen und bestimmte Systemintegrationen vorgesehen, um weiterhin Dienste im Vordergrund zu verwenden.
Zur Verwendung dieses Typs muss eine App mindestens eines der folgenden Kriterien erfüllen:
- Gerät befindet sich im Demomodus
- Die App ist ein Geräteinhaber
- App ist ein Profiler-Inhaber
- Sicherheits-Apps mit der Rolle
ROLE_EMERGENCY - Apps zur Geräteverwaltung
- Apps mit der Berechtigung
SCHEDULE_EXACT_ALARModerUSE_EXACT_ALARM VPN-Apps (konfiguriert über Einstellungen > Netzwerk und Internet > VPN)
Andernfalls gibt das System den Fehler
ForegroundServiceTypeNotAllowedExceptionaus.
Durchsetzung der Google Play-Richtlinien für die Verwendung von Diensttypen im Vordergrund
Wenn Ihre App auf Android 14 oder höher ausgerichtet ist, müssen Sie die Typen der Dienste im Vordergrund Ihrer App auf der Seite „App-Inhalte“ in der Play Console (Richtlinie > App-Inhalte) deklarieren. Weitere Informationen dazu, wie Sie die Typen Ihrer Dienste im Vordergrund in der Play Console deklarieren, finden Sie unter Anforderungen für Dienste im Vordergrund und Full-Screen Intents.