포그라운드 서비스 선언 및 권한 요청

앱 매니페스트에서 <service> 요소를 사용하여 앱의 각 포그라운드 서비스를 선언합니다. 각 서비스의 경우 android:foregroundServiceType 속성을 사용하여 서비스가 실행하는 작업의 종류를 선언합니다.

또한 포그라운드 서비스에 필요한 권한을 요청합니다.

버전 호환성

포그라운드 서비스를 선언하고 권한을 요청하기 위한 요구사항은 앱이 타겟팅하는 API 수준에 따라 다릅니다. 이 페이지에서는 API 수준 34 이상을 타겟팅하는 앱의 요구사항을 설명합니다. 이전 플랫폼 버전의 포그라운드 서비스 변경사항에 관한 자세한 내용은 포그라운드 서비스 변경사항을 참고하세요.

앱 매니페스트에서 포그라운드 서비스 선언

다음 코드는 미디어 재생 포그라운드 서비스를 선언하는 방법을 보여줍니다. 이러한 서비스를 사용하여 음악을 재생할 수 있습니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
  <application ...>

    <service
        android:name=".MyMediaPlaybackService"
        android:foregroundServiceType="mediaPlayback"
        android:exported="false">
    </service>
  </application>
</manifest>

코드 관련 핵심 사항

  • 이 예시에서 서비스에는 media 유형이 하나만 있습니다. 서비스에 여러 유형이 적용되는 경우 | 연산자로 구분합니다. 예를 들어 서비스에서 카메라와 마이크를 사용하는 경우 다음과 같이 선언합니다.

    android:foregroundServiceType="camera|microphone"
    
  • 앱이 타겟팅하는 API 수준에 따라 앱 매니페스트에서 포그라운드 서비스를 선언해야 할 수 있습니다. 특정 API 수준의 요구사항은 포그라운드 서비스 변경사항에 설명되어 있습니다.

    포그라운드 서비스를 만들려고 하는데 유형이 매니페스트에 선언되지 않은 경우 시스템은 startForeground()를 호출할 때 MissingForegroundServiceTypeException을 발생시킵니다.

    필수는 아니지만 모든 포그라운드 서비스를 선언하고 서비스 유형을 제공하는 것이 좋습니다.

포그라운드 서비스 권한 요청

다음 코드는 카메라를 사용하는 포그라운드 서비스의 권한을 요청하는 방법을 보여줍니다.

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

코드 관련 핵심 사항

  • 이 코드는 API 수준 34 이상을 타겟팅하는 앱에 권장사항을 사용합니다.