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
- Laufzeitvoraussetzungen
- 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: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. 
Datensynchronisierung
- Typ des Diensts im Vordergrund, der im Manifest unter
- android:foregroundServiceType
- dataSync
- Berechtigung, die im Manifest deklariert werden muss
- FOREGROUND_SERVICE_DATA_SYNC
- Konstante, die an startForeground()übergeben werden soll
- FOREGROUND_SERVICE_TYPE_DATA_SYNC
- Laufzeitvoraussetzungen
- 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:foregroundServiceType
- health
- 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 niedriger
- READ_HEART_RATE
- READ_SKIN_TEMPERATURE
- READ_OXYGEN_SATURATION
- ACTIVITY_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:foregroundServiceType
- location
- 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
- Typ des Diensts im Vordergrund, der im Manifest unter
- android:foregroundServiceType
- mediaPlayback
- Berechtigung, die im Manifest deklariert werden muss
- FOREGROUND_SERVICE_MEDIA_PLAYBACK
- Konstante, die an startForeground()übergeben werden soll
- FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
- Laufzeitvoraussetzungen
- 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.
- Typ des Dienstes im Vordergrund, der im Manifest unter
- android:foregroundServiceType
- mediaProcessing
- 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 Dienst- Service.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:foregroundServiceType
- mediaProjection
- Berechtigung, die im Manifest deklariert werden muss
- FOREGROUND_SERVICE_MEDIA_PROJECTION
- Konstante, die an startForeground()übergeben werden soll
- FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
- Laufzeitvoraussetzungen
- 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 auf nicht primäre Displays oder externe Geräte mit den - MediaProjectionAPIs. 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
- Typ des Diensts im Vordergrund, der im Manifest unter
- android:foregroundServiceType
- microphone
- Berechtigung, die im Manifest deklariert werden muss
- FOREGROUND_SERVICE_MICROPHONE
- Konstante, die an startForeground()übergeben werden soll
- FOREGROUND_SERVICE_TYPE_MICROPHONE
- Laufzeitvoraussetzungen
- 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:foregroundServiceType
- phoneCall
- Berechtigung, die im Manifest deklariert werden muss
- FOREGROUND_SERVICE_PHONE_CALL
- Konstante, die an startForeground()übergeben werden soll
- FOREGROUND_SERVICE_TYPE_PHONE_CALL
- Laufzeitvoraussetzungen
- 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
- Laufende Anrufe mit den - ConnectionService-APIs fortsetzen
- Alternativen
- Wenn Sie Telefon-, Video- oder VoIP-Anrufe tätigen müssen, 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:foregroundServiceType
- remoteMessaging
- 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:foregroundServiceType
- shortService
- 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 sollte- Service.stopSelf()oder- Service.stopForeground()aufrufen, bevor die Zeitüberschreitung eintritt. Andernfalls wird der neue- Service.onTimeout()aufgerufen, wodurch Apps kurzzeitig die Möglichkeit haben,- stopSelf()oder- stopForeground()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 wird- FOREGROUND_SERVICE_TYPE_SHORT_SERVICEerwähnt. Aus diesen Gründen wird empfohlen, den- Service.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 der- Service.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 Parameter- FOREGROUND_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 einer- ForegroundServiceStartNotAllowedException.- 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 Typs- shortServicevom 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
- Typ des Diensts im Vordergrund, der im Manifest unter
- android:foregroundServiceType
- specialUse
- Berechtigung, die in Ihrem Manifest deklariert werden muss
- FOREGROUND_SERVICE_SPECIAL_USE
- Konstante, die an startForeground()übergeben werden soll
- FOREGROUND_SERVICE_TYPE_SPECIAL_USE
- Laufzeitvoraussetzungen
- Keine
- Beschreibung
- Deckt alle gültigen Anwendungsfälle für Dienste im Vordergrund ab, die nicht von den anderen Typen abgedeckt werden. - Neben der Deklarierung des - FOREGROUND_SERVICE_TYPE_SPECIAL_USETyps von Diensten im Vordergrund sollten Entwickler Anwendungsfälle im Manifest deklarieren. Dazu geben sie das- <property>-Element innerhalb des Elements- <service>an. Diese Werte und die entsprechenden Anwendungsfälle werden geprüft, wenn Sie Ihre App in der Google Play Console einreichen. Die von Ihnen angegebenen Anwendungsfälle sind kostenlos formuliert. Sie sollten jedoch genügend Informationen angeben, damit die Prüfer nachvollziehen können, warum Sie den- specialUse-Typ verwenden müssen.- <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:foregroundServiceType
- systemExempted
- 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.
