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