profile image

L o a d i n g . . .

반응형

Android exoplayer get play state

 

안드로이드에서 동영상 재생을 위한 라이브러리는 감히 exoplayer가 가장 유명하지 않을까?

 

안드로이드 프레임워크에 포함되어 있지 않은 별도로 import를 해야하는 오픈소스 프로젝트지만, 구글에서 만든 라이브러리로 믿고 쓸 수 있다

 

이 exoplayer을 사용하던 중, 플레이에 대한 여러 state를 잡을 수 있는데, 예를 들어 동영상 종료후에 다른 동작을 하게 하던가 등등 state를 잡아서 코드를 작성할 수 있다.

 

이 state도 물론 제공을 해줘서 간단하게 구현을 할 수 있다.

 

simplePlayer?.apply {
            if (isPlaying) {
                stop()
            }
            binding.player.player = this
            setMediaItem(MediaItem.fromUri(File(context.filesDir, fileName).toString()))
            prepare()
            play()
            playerListener()
        }

위는 간단한 exoplayer를 set하는 코드인데 마지막에 playerListener()을 따로 만들어 두었다.

 

이 함수에서 exoplayer의 동작을 받을 수 있는 리스너를 추가 하였다.

private fun playerListener() {
        simplePlayer?.addListener(object : Player.Listener {
            override fun onPlaybackStateChanged(state: Int) {
                when(state) {
                    Player.STATE_ENDED -> onFinished()
                    Player.STATE_BUFFERING -> {}
                    Player.STATE_IDLE -> {}
                    Player.STATE_READY -> {}
                    else -> { }
                }
            }
        })
    }

이 처럼 동작을 잡을 수 있고 그에 해당하는 동작을 넣으면 된다.

 

나는 영상이 종료된 시점만 알면 되어서 Player.STATE_ENDED만 추가한 상태였다. 

반응형
복사했습니다!