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
- 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.
Verbundenes Gerät
- Typ des Dienstes im Vordergrund, der im Manifest unter
android:foregroundServiceTypeconnectedDevice- Berechtigung, die in Ihrem Manifest deklariert werden muss
FOREGROUND_SERVICE_CONNECTED_DEVICE- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE- Laufzeitvoraussetzungen
Mindestens eine der folgenden Bedingungen muss erfüllt sein:
Deklarieren Sie mindestens eine der folgenden Berechtigungen in Ihrem Manifest:
Sie müssen mindestens eine der folgenden Laufzeitberechtigungen anfordern und erhalten:
UsbManager.requestPermission()anrufen
- Beschreibung
Interaktionen mit externen Geräten, die eine Bluetooth‑, NFC‑, IR‑, USB‑ oder Netzwerkverbindung erfordern.
- Alternativen
Wenn Ihre App eine kontinuierliche Datenübertragung an ein externes Gerät ausführen muss, sollten Sie stattdessen den Companion Device Manager verwenden. Mit der API zur Anwesenheit von Companion-Geräten können Sie dafür sorgen, dass Ihre App weiter ausgeführt wird, solange sich das Companion-Gerät in Reichweite befindet.
Wenn Ihre App nach Bluetooth-Geräten suchen muss, können Sie stattdessen die Bluetooth Scan API verwenden.
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
- Typ des Diensts im Vordergrund, der im Manifest unter
android:foregroundServiceTypehealth- Berechtigung, die in Ihrem Manifest deklariert werden muss
FOREGROUND_SERVICE_HEALTH- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_HEALTH- Laufzeitvoraussetzungen
Mindestens eine der folgenden Bedingungen muss erfüllt sein:
Deklarieren Sie die Berechtigung
HIGH_SAMPLING_RATE_SENSORSin Ihrem Manifest.Sie müssen mindestens eine der folgenden Laufzeitberechtigungen anfordern und erhalten:
BODY_SENSORSbei API 35 und niedrigerREAD_HEART_RATEREAD_SKIN_TEMPERATUREREAD_OXYGEN_SATURATIONACTIVITY_RECOGNITION
- Beschreibung
Alle lang laufenden Anwendungsfälle zur Unterstützung von Apps in der Kategorie „Fitness“, z. B. Trainings-Tracker.
Standort
- Typ des Dienstes im Vordergrund, der im Manifest unter
android:foregroundServiceTypelocation- Berechtigung, die in Ihrem Manifest deklariert werden muss
FOREGROUND_SERVICE_LOCATION- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_LOCATION- Laufzeitvoraussetzungen
Der Nutzer muss die Standortdienste aktiviert haben und der App muss mindestens eine der folgenden Laufzeitberechtigungen gewährt werden:
.- Beschreibung
Langlaufende Anwendungsfälle, für die der Standortzugriff erforderlich ist, z. B. Navigation und Standortfreigabe.
- Alternativen
Wenn Ihre App ausgelöst werden soll, wenn der Nutzer bestimmte Orte erreicht, sollten Sie stattdessen die Geofence API verwenden.
Medien
- 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.
Medien werden verarbeitet.
- Typ des Dienstes im Vordergrund, der im Manifest unter
android:foregroundServiceTypemediaProcessing- Berechtigung, die in Ihrem Manifest deklariert werden muss
FOREGROUND_SERVICE_MEDIA_PROCESSING- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING- Laufzeitvoraussetzungen
- Keine
- Beschreibung
Dienst zum Ausführen zeitaufwendiger Vorgänge auf Medien-Assets, z. B. zum Konvertieren von Medien in verschiedene Formate. Das System erlaubt diesem Dienst eine begrenzte Laufzeit. Unter normalen Umständen beträgt diese Zeitbeschränkung 6 Stunden pro 24 Stunden. Dieses Limit gilt für alle
mediaProcessing-Dienste im Vordergrund einer App.Ihre App sollte den Medienverarbeitungsdienst in folgenden Fällen manuell beenden:
- Wenn der Transcodierungsvorgang abgeschlossen ist oder einen Fehlerstatus erreicht, muss der Dienst
Service.stopForeground()undService.stopSelf()aufrufen, um den Dienst vollständig zu beenden.
- Wenn der Transcodierungsvorgang abgeschlossen ist oder einen Fehlerstatus erreicht, muss der Dienst
Wenn die Zeitüberschreitung erreicht ist, ruft das System die Methode
Service.onTimeout(int, int)des Dienstes auf. In dieser Zeit hat der Dienst einige Sekunden Zeit,Service.stopSelf()aufzurufen. Wenn der DienstService.stopSelf()nicht aufruft, wird eine ANR mit der folgenden Fehlermeldung ausgegeben: „Ein Dienst im Vordergrund von <fgs_type> wurde nicht innerhalb des Zeitlimits beendet: <component_name>“.Hinweis:
Service.onTimeout(int, int)ist unter Android 14 oder niedriger nicht verfügbar. Wenn auf Geräten mit diesen Versionen ein Medienverarbeitungsdienst die Zeitüberschreitung erreicht, wird die App sofort vom System im Cache gespeichert. Aus diesem Grund sollte Ihre App nicht auf eine Benachrichtigung zur Zeitüberschreitung warten. Stattdessen sollte der Dienst im Vordergrund so bald wie möglich beendet oder in einen Dienst im Hintergrund geändert werden.
Medienprojektion
- Typ des Diensts im Vordergrund, der im Manifest unter
android:foregroundServiceTypemediaProjection- Berechtigung, die im Manifest deklariert werden muss
FOREGROUND_SERVICE_MEDIA_PROJECTION- Konstante, die an
startForeground()übergeben werden soll FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION- Voraussetzungen für die Laufzeit
Rufen Sie die Methode
createScreenCaptureIntent()auf, bevor Sie den Dienst im Vordergrund starten. Dadurch wird dem Nutzer eine Berechtigungsbenachrichtigung angezeigt. Der Nutzer muss die Berechtigung erteilen, bevor Sie den Dienst erstellen können.Nachdem Sie den Vordergrunddienst erstellt haben, können Sie
MediaProjectionManager.getMediaProjection()aufrufen.- Beschreibung
Übertragung von Inhalten mit den
MediaProjectionAPIs auf nicht primäre Displays oder externe Geräte. Diese Inhalte müssen nicht ausschließlich Medieninhalte sein.- Alternativen
Wenn Sie Medien auf ein anderes Gerät streamen möchten, verwenden Sie das Google Cast SDK.
Mikrofon
- 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.
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
- 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.
Kurzer Service
- Foreground service type to declare in manifest under
android:foregroundServiceTypeshortService- 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 callService.stopSelf()orService.stopForeground()before the timeout occurs. Otherwise, the newService.onTimeout()is called, giving apps a brief opportunity to callstopSelf()orstopForeground()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 mentionsFOREGROUND_SERVICE_TYPE_SHORT_SERVICE. For these reasons, it's considered best practice to implement theService.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 theService.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 theFOREGROUND_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 aForegroundServiceStartNotAllowedException.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 theshortServicetype declaration. However, the service must still adhere to the prerequisites of the other declared types. For more information, see the Foreground services documentation.
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
- 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.
Durchsetzung der Google Play-Richtlinien für die Verwendung von Diensttypen im Vordergrund
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.