アプリのマニフェストで、アプリの各フォアグラウンド サービス
を <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 レベルの要件については、 フォアグラウンド サービスの変更をご覧ください。
フォアグラウンド サービスを作成しようとしたときに、そのタイプがマニフェストで宣言されていない場合、システムは
MissingForegroundServiceTypeExceptionを呼び出すとstartForeground()をスローします。必須ではない場合でも、すべてのフォアグラウンド サービスを宣言し、そのサービスタイプを指定することをおすすめします。
フォアグラウンド サービスの権限をリクエストする
次のコードは、カメラを使用するフォアグラウンド サービスの権限をリクエストする方法を示しています。
<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 以降をターゲットとするアプリのベスト プラクティスを使用しています。