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()
}