Pinterest通过在Android应用中添加适当的视频管理,在为用户提供更加流畅的视频体验的同时,尽可能的为开发人员提供易于使用的视频组件,简化其工作流程。 本文来自Pinterest工程博客。
文 / Grey Skold
译 / 屈健宁
原文
https://medium.com/pinterest-engineering/managing-videos-on-android-f59da9601d5f
管理当前所有可用视频的播放状态
了解视频在屏幕上的可见率
为我们的开发人员提供易于使用的视频组件
override fun onResume() {
super.onResume()
// Required by consumers to implement
videoView?.apply {
viewability = Viewability. FullyVisible
onActivate()
onViewCompletelyVisible()
}
}
override fun onPause() {
// Required by consumers to implement
videoView?.apply {
viewability = Viewability. NotVisible
onDeactivate()
}
super.onPause()
}
override fun onResume() {
super.onResume()
videoManager.onResume( this)
}
override fun onPause() {
videoManager.onPause( this)
super.onPause()
}
// VideoManager.class internally
override fun onResume(videoSurface: VideoViewSurface) {
videoSurface.videoViews.forEach {
registerVideo(it)
}
}
override fun onPause(videoSurface: VideoViewSurface) {
videoSurface.videoViews.forEach {
unregisterVideo(it)
}
}
向消费者提供包括一系列``障碍物’'视图的选项,这些视图可能会覆盖我们的基础视频(例如工具栏,浮动按钮等)
显示弹出窗口的回调(即onWindowFocusChanged())屏幕滚动组件或UI组件不在屏幕上(请参阅RecyclerView监听器)
屏幕上显示视频表面时的其他回调(即onResume()等)
object : FooBarVideoView(
context, // application context
analytics, // Analytics object
url, // video url
uid, // unique ID
false // isAd flag
) {
// configuration flag for custom setup (mute, autoplay, controller, etc.)
override val videoConfiguration = VideoConfiguration.FOO_BAR
}.apply {
shouldLoop = true
videoAspectRatio = aspectRatio
render(videoMetaData) // loads video, videoMetaData contains: url, isAd, uid
}
PinterestVideoView(context).apply {
// Optional params for setup/customization
this.analytics = pinterestAnalytics
this.mute = false
this.autoPlay = true
this.alwaysAutoplay = true
this.alwaysPlay = true
this.showMute = true
this.looping = true
this.bufferingRule = SHOW_BUFFERING_ALWAYS
}.apply {
render(videoMetaData) // loads video, videoMetaData contains: url, isAd, uid
}
LiveVideoStackCon 2019深圳讲师招募
12月13-14日,LiveVideoStackCon首次来到深圳,将全球前沿多媒体技术实践与深圳本地产业结合,触发技术与商业灵感。欢迎将你的技术实践、踩坑与填坑经历、技术与商业创业的思考分享出来。请将个人资料和话题信息邮件到 speaker@livevideostack.com 或点击【阅读原文】了解成为LiveVideoStackCon讲师的权益与义务,我们会在48小时内回复。
LiveVideoStack 秋季招聘
LiveVideoStack正在招募编辑/记者/运营,与全球顶尖多媒体技术专家和LiveVideoStack年轻的伙伴一起,推动多媒体技术生态发展。同时,也欢迎你利用业余时间、远程参与内容生产。了解岗位信息请在BOSS直聘上搜索“LiveVideoStack”,或通过微信“Tony_Bao_”与主编包研交流。
转载:https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/101729271