Apple is Apple

일일 회고

 

연휴가 거의 끝나고, 다시 시작할 시간이 되었다.

연휴 간 내가 맡은 부분은 완료를 하였다. MVVM을 해보는 것도 중요하지만 프로젝트의 완성을 위해 안된 부분을 같이 해보기로 하였다. 

 

같이 해보면서 이번 프로젝트도 잘 마무리해 보자


오늘의 키워드

  • 지금까지 내가 한 작업 간 트러블 슈팅 정리

  • 원인 - 동영상 재생에 관련된 id를 찾지 못함
  • 해결과정 - 동영상 id를 찾고 ExoPlayer를 이용한 방법을 찾음

 

 

  • 원인 -youtubePlayerView.initialize()의 여러 번 호출로 인한 오류 발생 https://github.com/PierfrancescoSoffritti/android-youtube-player/issues/557에 따르면 youtubePlayerView는 한 번만 초기화해주면 된다고 했음
  • 해결과정:  youtubePlayerView.initialize()을 ViewHolder의 init {} 에만 한 번 선언함으로써 해결
  • 리사이클러뷰에서 youtubePlayerView 사용 시, ViewHolder의 bind메서드에서 youtubePlayerView.initialize() 메서드를 호출했을 때, java.lang.IllegalStateException: This YouTubePlayerView has already been initialized. 오류가 생김
  init {
        val tracker = YouTubePlayerTracker()
        var duration: Float?
        val customUi =
            binding.shortsPageVideoView.inflateCustomPlayerUi(R.layout.shorts_custom_view)
        val youtubePlayerListener = object : AbstractYouTubePlayerListener() {
            override fun onReady(youTubePlayer: YouTubePlayer) {
                val customPlayerUiController = CustomPlayerUiController(customUi)
                youTubePlayer.run {
                    addListener(tracker)
                    addListener(customPlayerUiController)
                }
            }

            override fun onCurrentSecond(youTubePlayer: YouTubePlayer, second: Float) {
                super.onCurrentSecond(youTubePlayer, second)
                Handler(Looper.getMainLooper()).postDelayed({
                    duration = tracker.videoDuration
                    duration?.let {
                        updateProgressBar(it, binding.progressBar, tracker)
                    }
                }, 500)
            }
        }
        val iFramePlayerOptions = IFramePlayerOptions.Builder().apply {
            controls(0)
            rel(0)
            ivLoadPolicy(3)
            ccLoadPolicy(1)
            fullscreen(0)
        }.build()
        binding.shortsPageVideoView.initialize(youtubePlayerListener, false, iFramePlayerOptions)
    }

 

 

MVVM 적용

-- 우선 팀원들의 기능 완성을 위해 후순위로 미룸

 

profile

Apple is Apple

@mjjjjjj