🎧
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