Declarar serviços em primeiro plano e solicitar permissões

No manifesto do app, declare cada um dos serviços em primeiro plano com um elemento <service>. Para cada serviço, use um atributo android:foregroundServiceType para declarar o tipo de trabalho que ele faz.

Além disso, solicite todas as permissões necessárias para seus serviços em primeiro plano.

Compatibilidade de versões

Os requisitos para declarar seus serviços em primeiro plano e solicitar permissões variam de acordo com o nível da API que o app segmenta. Esta página descreve os requisitos para apps direcionados ao nível 34 da API ou mais recente. Para informações sobre mudanças nos serviços em primeiro plano em versões anteriores da plataforma, consulte Mudanças nos serviços em primeiro plano.

Declarar serviços em primeiro plano no manifesto do app

O código abaixo mostra como declarar um serviço em primeiro plano de reprodução de mídia. Você pode usar um serviço como esse para tocar 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>

Pontos principais sobre o código

  • Neste exemplo, o serviço tem apenas um tipo, media. Se vários tipos se aplicam ao seu serviço, separe-os com o operador |. Por exemplo, se o serviço usar a câmera e o microfone, declare-o assim:

    android:foregroundServiceType="camera|microphone"
    
  • Dependendo do nível da API que o app tem como destino, pode ser necessário declarar serviços em primeiro plano no manifesto do app. Os requisitos para níveis de API específicos são descritos em Mudanças nos serviços em primeiro plano.

    Se você tentar criar um serviço em primeiro plano e o tipo dele não for declarado no manifesto, o sistema vai gerar uma MissingForegroundServiceTypeException ao chamar startForeground().

    Mesmo quando não é necessário, é recomendável declarar todos os serviços em primeiro plano e fornecer os tipos de serviço.

Solicitar as permissões de serviço em primeiro plano

O código a seguir mostra como solicitar permissões para um serviço em primeiro plano que usa a câmera.

<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>

Pontos principais sobre o código

  • Esse código usa as práticas recomendadas para um app direcionado ao nível 34 da API ou mais recente.