fun initPlayer()

in app/src/main/java/com/amazonaws/ivs/player/ecommerce/ui/viewmodels/MainViewModel.kt [42:75]


    fun initPlayer(textureView: TextureView) {
        _onLoading.tryEmit(true)
        player = MediaPlayer(textureView.context)
        player?.setListener(
            onVideoSizeChanged = { width, height ->
                Timber.d("Video size changed: $width $height")
                _onSizeChanged.tryEmit(SizeModel(width, height))
            },
            onStateChanged = { state ->
                Timber.d("State changed: $state")
                _onLoading.tryEmit(state != Player.State.PLAYING)
            },
            onMetadata = { data, buffer ->
                if (MediaType.TEXT_PLAIN == data) {
                    try {
                        val productId = String(buffer.array(), Charsets.UTF_8).asObject<MetadataModel>().productId
                        if (metadata.lastOrNull() != productId) {
                            metadata.add(productId)
                        }
                        selectProduct()
                    } catch (e: Exception) {
                        Timber.d(e, "Failed to parse metadata")
                    }
                }
            },
            onError = { exception ->
                Timber.d("Error happened: $exception")
                _onError.tryEmit(ErrorModel(exception.code, exception.errorMessage))
            }
        )
        player?.setSurface(Surface(textureView.surfaceTexture))
        player?.load(Uri.parse(BuildConfig.BASE_STREAM_URL))
        player?.play()
    }