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 o serviço realiza.

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

Compatibilidade de versões

Os requisitos para declarar os 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 que segmentam o nível desejado da API 34 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 a seguir 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 aplicarem ao seu serviço, separe-os com o operador |. Por exemplo, se o serviço usa a câmera e o microfone, declare-o assim:

    android:foregroundServiceType="camera|microphone"
    
  • Dependendo do nível da API que o app segmenta, talvez seja necessário declarar serviços em primeiro plano no manifesto do app. Os requisitos para níveis da 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 estiver declarado no manifesto, o sistema vai gerar uma MissingForegroundServiceTypeException ao chamar startForeground().

    Mesmo quando não é obrigatório, é uma prática recomendada declarar todos os serviços em primeiro plano e informar 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 que segmenta o nível desejado da API 34 ou mais recente.