Declara servicios en primer plano y solicita permisos
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
En el manifiesto de tu app, declara cada uno de los servicios en primer plano de la app con un elemento <service>
. Para cada servicio, usa un atributo android:foregroundServiceType
para declarar qué tipo de trabajo realiza.
Además, solicita los permisos que necesiten tus servicios en primer plano.
Compatibilidad de versiones
Los requisitos para declarar tus servicios en primer plano y solicitar permisos varían según el nivel de API al que se orienta tu app. En esta página, se describen los requisitos para las apps que segmentan el nivel de API 34 o superior. Para obtener información sobre los cambios en los servicios en primer plano en versiones anteriores de la plataforma, consulta Cambios en los servicios en primer plano.
Declara servicios en primer plano en el manifiesto de la app
En el siguiente código, se muestra cómo declarar un servicio en primer plano de reproducción de contenido multimedia.
Es posible que uses un servicio como este para reproducir música.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<application ...>
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="false">
</service>
</application>
</manifest>
Puntos clave sobre el código
En este ejemplo, el servicio tiene solo un tipo, media
. Si se aplican varios tipos a tu servicio, sepáralos con el operador |
. Por ejemplo, si tu servicio usa la cámara y el micrófono, decláralo de la siguiente manera:
android:foregroundServiceType="camera|microphone"
Según el nivel de API al que se oriente tu app, es posible que debas declarar servicios en primer plano en el manifiesto de la app. Los requisitos para niveles de API específicos se describen en Cambios en los servicios en primer plano.
Si intentas crear un servicio en primer plano y su tipo no se declara en el manifiesto, el sistema arroja un MissingForegroundServiceTypeException
cuando se llama a startForeground()
.
Incluso cuando no es obligatorio, se recomienda declarar todos los servicios en primer plano y proporcionar sus tipos de servicio.
Solicita los permisos de servicio en primer plano
En el siguiente código, se muestra cómo solicitar permisos para un servicio en primer plano que usa la cámara.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA"/>
<application ...>
...
</application>
</manifest>
Puntos clave sobre el código
- Este código usa las prácticas recomendadas para una app que se orienta al nivel de API 34 o superior.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-08-27 (UTC)
[null,null,["Última actualización: 2025-08-27 (UTC)"],[],[],null,["In your app's manifest, declare each of your app's foreground services\nwith a [`\u003cservice\u003e`](/guide/topics/manifest/service-element)\nelement. For each service, use an\n[`android:foregroundServiceType` attribute](/develop/background-work/services/fgs/service-types)\nto declare what kind of work the service does.\n\nIn addition, request any permissions needed by your foreground services.\n| **Important:** All foreground service declarations must comply with the requirements in the [Google Play Device and Network Abuse policy](https://support.google.com/googleplay/android-developer/answer/9888379) and the Google Play [Understanding foreground service requirements\n| documentation](https://support.google.com/googleplay/android-developer/answer/13392821).\n\nVersion compatibility\n\nThe requirements for declaring your foreground services and requesting\npermissions vary depending on what API level your app targets. This page\ndescribes the requirements for apps that target API level 34 or higher. For\ninformation about changes to foreground services in earlier platform versions,\nsee [Changes to foreground services](/develop/background-work/services/fgs/changes).\n\nDeclare foreground services in the app manifest\n\nThe following code shows how to declare a media playback foreground service.\nYou might use a service like this to play music. \n\n \u003cmanifest xmlns:android=\"http://schemas.android.com/apk/res/android\" ...\u003e\n \u003capplication ...\u003e\n\n \u003cservice\n android:name=\".MyMediaPlaybackService\"\n android:foregroundServiceType=\"mediaPlayback\"\n android:exported=\"false\"\u003e\n \u003c/service\u003e\n \u003c/application\u003e\n \u003c/manifest\u003e\n\nKey points about the code\n\n- In this example, the service has only one type, `media`. If\n multiple types apply to your service, separate them with the `|`\n operator. For example, if your service uses the camera and microphone,\n declare it like this:\n\n android:foregroundServiceType=\"camera|microphone\"\n\n- Depending on what API level your app targets, you may be\n **required** to declare foreground services in the app\n manifest. The requirements for specific API levels are described in\n [Changes to foreground services](/develop/background-work/services/fgs/changes).\n\n If you try to create a foreground service and its type isn't declared\n in the manifest, the system throws a\n [`MissingForegroundServiceTypeException`](/reference/android/app/MissingForegroundServiceTypeException)\n upon calling `startForeground()`.\n\n Even when it isn't required, it's a best practice to declare\n all your foreground services and provide their service types.\n\nRequest the foreground service permissions\n\nThe following code shows how to request permissions for a foreground\nservice that uses the camera. \n\n \u003cmanifest xmlns:android=\"http://schemas.android.com/apk/res/android\" ...\u003e\n\n \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE\"/\u003e\n \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE_CAMERA\"/\u003e\n\n \u003capplication ...\u003e\n ...\n \u003c/application\u003e\n \u003c/manifest\u003e\n\nKey points about the code\n\n- This code uses best practices for an app that targets API level 34 or higher."]]