앱의 매니페스트에서 <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 이상을 타겟팅하는 앱의 권장사항을 사용합니다.