MediaSession
미디어 세션을 구현하면 사용자가 재생을 제어할 수 있다.
- 헤드폰 - 헤드폰에 있는 버튼 등을 사용하여 미디어를 재생하거나 일지 중지, 이전노래, 다음노래로 이동할 수 있다.
- Wear OS - Wear OS 에서도 쉽게 재생을 제어할 수 있다.
- Google Assistant - ‘일시중지’ 등과 같은 지시를 할 수 있다.
- Media Control - 미디어 세션의 컨트롤을 보여준다.
<aside>
📼 Android 공식 문서에서는 아래와 같은 경우에는 MediaSession 사용을 적극 권장
- 영화 또는 실시간 TV 같은 긴 형식의 동영상 콘텐츠 스트리밍
- 음악 재생목록, 팟캐스트 같은 오디오 컨텐츠 스트리밍
- TV 앱
</aside>
우리의 경우는 2번 째에 해당
하기 때문에 Media Session 을 도입하였음.
Media Session 특징
- 우리가 관리하는 플레이어와 함께 움직인다.
context
와 player
객체로 미디어 세션을 구성한다.
- Activity 나 Fragment 의 onStart 또는 onResume / Media Session 및 플레이어를 소유하는 Service의 onCreate 메서드와 같이 필요한 경우에 미디어 세션을 만들고 초기화 해야한다.
- Media3 는 플레이어 상태를 사용하여 미디어 세션의 상태를 자동으로 업데이트 한다.
MediaSessionService
앱이 포그라운드에 있지 않을 때 미디어를 계속 재생시킨다.
백그라운드 재생을 용이하게 하기 위해 서비스에 미디어 세션 및 플레이어를 보유하는 것이다.
Service 생명주기
-
onCreate
첫번째 컨트롤러가 연결되려고 하고 서비스가 인스턴스화되고 시작될때 호출.
Player 와 MediaSession을 빌드하기에 가장 적합한 위치
-
onTaskRemoved(Intent)
사용자가 최근 작업에서 앱을 닫을 때 호출.
재생이 진행중인 경우 앱은 서비스를 포그라운드에서 계속 실행하도록 선택할 수 있다.
일시중지되면 서비스가 포그라운드에 있지 않으므로 서비스를 중지해야 한다.