アプリのマニフェストで、アプリの各フォアグラウンド サービスを <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
というタイプが 1 つだけあります。サービスに複数のタイプが適用される場合は、|
演算子で区切ります。たとえば、サービスがカメラとマイクを使っている場合は、次のように宣言します。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 以降をターゲットとするアプリのベスト プラクティスを使用しています。