フォアグラウンド サービスを宣言して権限をリクエストする

アプリのマニフェストで、アプリの各フォアグラウンド サービス を <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 以降をターゲットとするアプリのベスト プラクティスを使用しています。