Zenn
🎧

MediaSessionService を継承したクラスで通知を自動生成する場合、startForeground は必要か

2025/03/28に公開

背景

タイトルの通り、MediaSessionService を継承したクラスを作成して音声プレイヤーを実装していました。
Media3 の MediaSessionService は、通知プレイヤー(MediaNotification)を自動で生成してくれる仕組みを提供していますが、startForeground() を明示的に呼ぶ必要があるのかどうか、ドキュメントに明確な記述が見つからず疑問に思ったため、調べてみました。

実装時には以下の公式ドキュメントを参考にしています:
https://developer.android.com/media/media3/session/background-playback?hl=ja

調べたこと

MediaSessionService
public void onUpdateNotification(MediaSession session, boolean startInForegroundRequired)

の中で、

MediaNotificationManager
public void updateNotification(MediaSession session, boolean startInForegroundRequired)

が呼ばれ、その中で以下を呼び、startForegroundを呼ばれていることを確認。

MediaNotificationManager
private void updateNotificationInternal(
      MediaSession session,
      MediaNotification mediaNotification,
      boolean startInForegroundRequired)

https://github.com/androidx/media/blob/release/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java#L278

まとめ

ということで、自動生成の通知プレイヤーを利用している範囲においては、startForegroundを呼ぶ必要はなさそうです。

Discussion

ログインするとコメントできます