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

No manifesto do app, declare cada um dos serviços em primeiro plano do app com um <service> elemento. Para cada serviço, use um android:foregroundServiceType atributo 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 a que o app se destina. Esta página descreve os requisitos para apps destinados ao 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 usar a câmera e o microfone, declare-o assim:

    android:foregroundServiceType="camera|microphone"
    
  • Dependendo do nível da API a que o app se destina, você precisa declarar serviços em primeiro plano no manifesto do app. Os requisitos para níveis específicos da API 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 for necessário, é uma prática recomendada declarar todos os serviços em primeiro plano e fornecer os tipos deles.

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 destinado ao nível 34 da API ou mais recente.