Android 15 では、フォアグラウンド サービスのタイプに次の変更が加えられます。
メディアを処理しています
- マニフェストで宣言するフォアグラウンド サービス タイプ
android:foregroundServiceType
mediaProcessing
- マニフェストで宣言する権限
FOREGROUND_SERVICE_MEDIA_PROCESSING
startForeground()
に渡す定数FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING
- ランタイムの前提条件
- なし
- 説明
メディア アセットに対して時間のかかるオペレーション(メディアの形式変換など)を実行するサービス。システムでは、このサービスの実行時間が制限されています。通常、この制限時間は 24 時間のうち 6 時間です。(この上限は、アプリのすべての
mediaProcessing
フォアグラウンド サービスで共有されます)。アプリは、次のシナリオでメディア処理サービスを手動で停止する必要があります。
- トランスコード オペレーションが完了するか、失敗状態に達したら、サービスが
Service.stopForeground()
とService.stopSelf()
を呼び出してサービスを完全に停止するようにします。
- トランスコード オペレーションが完了するか、失敗状態に達したら、サービスが
タイムアウト期間が経過すると、システムはサービスの
Service.onTimeout(int, int)
メソッドを呼び出します。この時点で、サービスはService.stopSelf()
を呼び出すために数秒間待機します。サービスがService.stopSelf()
を呼び出さないと、ANR が発生し、「<fgs_type> のフォアグラウンド サービスがタイムアウト内に停止しませんでした: <component_name>」というエラー メッセージが表示されます。注:
Service.onTimeout(int, int)
は Android 14 以前では使用できません。これらのバージョンを搭載したデバイスでは、メディア処理サービスがタイムアウト期間に達すると、システムはすぐにアプリをキャッシュに保存します。そのため、アプリはタイムアウト通知を待つ必要はありません。代わりに、適切なタイミングでフォアグラウンド サービスを終了するか、バックグラウンド サービスに変更する必要があります。
カメラ
Android 15 以降をターゲットとするアプリは、BOOT_COMPLETED
ブロードキャスト レシーバからカメラのフォアグラウンド サービスを起動することはできません。詳細については、フォアグラウンド サービスを起動する BOOT_COMPLETED
ブロードキャスト レシーバの制限をご覧ください。
データの同期
Android 15 以降をターゲットとするアプリは、BOOT_COMPLETED
ブロードキャスト レシーバからデータ同期フォアグラウンド サービスを起動することはできません。詳細については、フォアグラウンド サービスを起動する BOOT_COMPLETED
ブロードキャスト レシーバの制限をご覧ください。
メディア再生
Android 15 以降をターゲットとするアプリは、BOOT_COMPLETED
ブロードキャスト レシーバからメディア再生フォアグラウンド サービスを起動することはできません。詳細については、フォアグラウンド サービスを起動する BOOT_COMPLETED
ブロードキャスト レシーバの制限をご覧ください。
メディア プロジェクション
Android 15 以降をターゲットとするアプリは、BOOT_COMPLETED
ブロードキャスト レシーバからメディア プロジェクション フォアグラウンド サービスを起動することはできません。詳細については、フォアグラウンド サービスを起動する BOOT_COMPLETED
ブロードキャスト レシーバの制限をご覧ください。
マイク
Android 14(API レベル 34)以降をターゲットとするアプリは、BOOT_COMPLETED
ブロードキャスト レシーバからマイク フォアグラウンド サービスを起動できません。詳細については、フォアグラウンド サービスを起動する BOOT_COMPLETED
ブロードキャスト レシーバの制限をご覧ください。
電話
Android 15 以降をターゲットとするアプリは、BOOT_COMPLETED
ブロードキャスト レシーバから電話通話のフォアグラウンド サービスを起動することはできません。詳細については、フォアグラウンド サービスを起動する BOOT_COMPLETED
ブロードキャスト レシーバの制限をご覧ください。