fun initPlayer()

in app/src/main/java/com/amazon/ivs/optimizations/ui/precaching/PreCachingViewModel.kt [36:77]


    fun initPlayer(context: Context, playbackUrl: String?) {
        if (playerView != null) {
            playerView?.player?.load(Uri.parse(playbackUrl ?: STREAM_URI))
            return
        }
        _onBuffering.tryEmit(true)

        playerView = PlayerView(context).apply {
            Timber.d("Initializing player and calling load()")
            player.load(Uri.parse(playbackUrl ?: STREAM_URI))
            setControlsEnabled(false)
            playerListener = player.init(
                { videoSizeState ->
                    _onSizeChanged.tryEmit(videoSizeState)
                },
                { state ->
                    when (state) {
                        Player.State.BUFFERING -> {
                            _onBuffering.tryEmit(true)
                        }
                        Player.State.READY -> {
                            player.qualities.firstOrNull { it.name == MAX_QUALITY }?.let { quality ->
                                player.setAutoMaxQuality(quality)
                            }
                            _onBuffering.tryEmit(false)
                        }
                        Player.State.PLAYING -> {
                            _onBuffering.tryEmit(false)
                            if (timeToVideo == null) {
                                timeToVideo = (Date().time - preferences.capturedClickTime).toInt()
                            }
                        }
                        else -> { /* Ignored */ }
                    }
                },
                { exception ->
                    _onError.tryEmit(exception)
                }
            )
        }
        launchUpdates()
    }