🎧
MediaSessionService を継承したクラスで通知を自動生成する場合、startForeground は必要か
背景
タイトルの通り、MediaSessionService
を継承したクラスを作成して音声プレイヤーを実装していました。
Media3 の MediaSessionService
は、通知プレイヤー(MediaNotification
)を自動で生成してくれる仕組みを提供していますが、startForeground()
を明示的に呼ぶ必要があるのかどうか、ドキュメントに明確な記述が見つからず疑問に思ったため、調べてみました。
実装時には以下の公式ドキュメントを参考にしています:
調べたこと
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)
まとめ
ということで、自動生成の通知プレイヤーを利用している範囲においては、startForeground
を呼ぶ必要はなさそうです。
Discussion