Foreground에서 동작하는 플레이어, 그리고 Notification을 위한 전체 동작 흐름도
UI에서 유저가 플레이어를 조작하면 도메인 모듈의 유스케이스에 이벤트가 전달됩니다.
유스케이스에선 MediaService 모듈의 MediaControllerProvider를 통해 MediaController를 제공받아 유저의 컨트롤 이벤트를 MediaSession으로 전달합니다.
이벤트가 처리되면 콜백으로 MediaListenerUsecase에서 Player 상태를 나타내는 PlayerState를 받게 됩니다.
MediaController를 통해 유저의 미디어 조작 이벤트를 세션에 전달하고, UI로 PlayerState를 전달하는 유스케이스
UI레이어에서의 모든 미디어 이벤트는 이 유스케이스를 통해 전달됨
Player.Listener를 설정
이 리스너를 MediaController에 연결하여 Player의 상태 데이터를 UI레이어에서 사용할 PlayerState로 변환해 전달
리스너는 플레이어가 일시정지/재생, 탐색, 준비상태 등등의 동작이 일어날때마다 currentPlayerState를 업데이트함
동시에 비동기적으로 1초마다 플레이어의 currentPosition(현재 재생시간) 을 currentPlayerState로 업데이트
이를 통해 UI의 재생바가 업데이트 된다.