Building a video app - Building a video player activity Android


Building a video player activity

https://developer.android.com/guide/topics/media-apps/video-app/building-a-video-player-activity

액티비티가 onCreate() 라이프사이클 콜백 메소드를 받으면 다음을 수행해야 한다.

- 미디어 세션을 생성하고 초기화한다.
- 미디어 세션 콜백을 설정한다
- 미디어 세션의 미디어 버튼 리시버를 널로 설정하여 이게 보이지 않을 때 미디어버튼 이벤트가 플레이어를 재시작하지 못하게 한다. 이는 안드로이드 5.0 이상일 때만 활성화된다.
- 미디어 컨트롤러를 생성하고 초기화한다.

onCreate() 는 다음 단계를 보여준다

private lateinit var mMediaSession: MediaSessionCompat

public override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)

  // MediaSessionCompat 생성한다
  mMediaSession = MediaSessionCompat(this, LOG_TAG).apply {
    // 미디어 버튼과 트랜스포트 컨트롤로부터 콜백을 활성화한다
    setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS or MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS)
    // 앱이 보여지지 않을 때 미디어 버튼이 플레이어를 재시작하지 않게 한다
    setMediaButtonReceiver(null)
    // ACTION_PLAY 로 초기 PlaybackState를 설정하여 미디어 버튼이 플레이어를 시작할 수 있다.
    val stateBuilder = PlaybackStateCompat.Builder().setActions(PlaybackStateCompat.ACTION_PLAY or PlaybackStateCompat.ACTION_PLAY_PAUSE)
    setPlaybackState(stateBuilder.build())
  }
  // MediaControllerCompat 을 생성한다
  MediaControllerCompat(this, mMediaSession).also { mediaController ->
    MediaControllerCompat.setMediaController(this, mediaController)
  }
}

앱 닫힐 때, 액티비티는 onPause(), onStop() 콜백을 받는다. 만약 플레이어가 재생중이면, 액티비티가 없어지기 전에 반드시 중지해야 한다. 사용할 콜백의 선택은 실행중인 안드로이드 버전에 의존한다.

안드로이드 6.0이나 이전에는 언제 onStop() 이 호출될지 보증이 없다. 액티비티가 사라진 5초이후에 호출된다. 그러므로, 7.0보다 이전 안드로이드 버전은 onPause() 에서 재생을 중지해야 한다. 안드로이드 7.0 과 이후는 액티비티가 사라진후 가급적 빨리 onStop() 을 호출하므로 이게 문제되지 않는다.

갈무리하면:
- 안드로이드 버전 6.0과 이전에는 onPause() 콜백에서 플레이어를 중지한다.
- 안드로이드 버전 7.0과 이후에는 onStop() 콜백에서 플레이어를 중지한다.

액티비티가 onDestroy() 를 받으면 플레이어를 릴리즈 하고 클린해야 한다.



덧글

댓글 입력 영역