Notice
Recent Posts
Recent Comments
Link
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Archives
Today
Total
관리 메뉴

Flutter 개발 Story

미디어 세션 본문

관련 개념

미디어 세션

flutter 개발하자 2021. 1. 18. 09:15

미디어 세션

 - 미디어 세션은 플레이어와의 모든 통신을 담당함

 (플레이어는 이를 제어하는 미디어 세션에서만 호출됨.)

 

 - 세션은 플레이어의 상태(재생/일시정지등)과 재생중인 정보에 대한 정보를 유지함. 세션은 하나 이상의 미디어 컨트롤러로 부터 콜백을 수신할 수 있음 -> 이로 인해 앱의 UI뿐만 아니라 WearOS나 Android Auto와 같은 주변 기기를 통해 플레이어를 제어할 수 있음 

(콜백에 응답하는 로직은 일관적이어야함. )

 

미디어 세션 사용

미디어 세션 및 관련 플레이어를 소유한 활동 또는 서비스의 onCreate()메서드에서 미디어 세션을 만들고 초기화해야함.

 

미디어 세션 초기화 방법

1. 미디어 세션이 미디어 컨트롤러 및 미디어 버튼에서 콜백을 수신할 수 있도록 플래그 설정

2. PlaybackStateCompat의 인스턴스를 만들고 초기화한 다음 세션에 할당

3. MediaSessionCompat.Callback의 인스턴스를 만들고 세션에 할당

(세션을 소유한 활동 또는 서비스의 onCreate()메서드에서 미디어 세션을 만들고 초기화해야함.)

(앱이 새로 초기화되거나 중지될 때 미디어 버튼이 작동하려면 미디어 버튼이 전송하는 인텐트와 일치하는 재생 작업이 PlaybackState에 포함되어야함 -> 초기화 중에 ACTION_PLAY가 세션 상태에 할당됨)

 

미디어 세션 상태 및 메타 데이터 유지 관리

1. 현재 작동 상태 설명 - PlaybackStateCompat클래스

 - 전송 상태(getState())

 - 오류 코드 및 선택사항인 오류메시지(getErrorCode())

 - 플레이어 위치

 - 현재 상태에서 처리할 수 있는 유효한 컨트롤러 작업

2. 재생중인 자료를 설명 - MediaMetadataCompat 클래스

 - 아티스트, 앨범 및 트랙의 이름

 - 트랙 길이

 - 잠금 화면에 표시할 앨범 아트워크, 이미지는 최대 크기 320x320dp의 비트맵임.

 - 아트워크의 더 큰 버전을 가리키는 ContentUris의 인스턴스

 

플레이어 상태와 메타데이터는 미디어 세션의 수명 동안 변경 될 수 있음 -> 상태 또는 메타데이터가 변경될 때마다 각 클래스인 PlaybackStateCompat.Builder() 또는 MediaMetadataCompat.Builder()에 해당하는 빌더를 사용한 다음, setPlaybackState() 또는 setMetaData()를 호출해 새 인스턴스를 미디어 세션에 전달해야함.

(빈번한 작읍으로 인한 전체 메모리 소비를 줄이려면 빌더를 한 번만 만들고, 세션 수명 동안 재사용하는 것이 좋음)

 

상태 및 오류

PlaybackState는 세션의 재생 상태(getState())와 관련 오류 코드(getErrorCode())에 관한 값을 포함하는 객체임

   재생이 중단될 때마다 심각한 오류가 발생함 - 전송 상태를 STATE_ERROR로 설정하고, setErrorMessage(int,          CharSequence)와 관련된 오류를 지정해야함 - 오류에 의해 재생이 차단되는 한 PlaybackState는 계속해서 STATE_ERROR 및 오류를 보고함

   앱이 요청을 처리할 수 없는데 계속해서 재생할 수 있는 경우에는 심각하지 않은 오류가 발생함 - 전송은 정상 상태(STATE_PLAYING)로 유지되지만, PlaybackState는 오류 코드를 갖고 있음 (예를 들어 마지막 곡이 재생중이고, 사용자가 다음 곡으로 건너뛰기를 요청하면 재생을 계속할 수 있지만, 오류 코드가 ERROR_CODE_END_OF_QUEUE인 새 PlaybackState를 만든 다음 setPlaybackState()를 호출해야함) 세션에 연결된 미디어 컨트롤러는 onPlaybackStateChanged()콜백을 수신하고 무슨 일이 일어났는지를 사용자에게 설명함. 심각하지 않은 오류는 발생 시점에 한 번만 보고해야함. 다음에 세션 업데이트 시 PlaybackState는 심각하지 않은 동일한 오류를 다시 설명하지 않음.

 

'관련 개념' 카테고리의 다른 글

Provider 패턴  (0) 2021.02.09
BLOC 패턴  (0) 2021.02.09
PubSub모델  (0) 2021.01.14
BLE에대하여  (0) 2020.12.02
Comments