仅限Android 4.0及更高版本的电话。
应用程序使用ActionBar的导航选项卡。其中一个选项卡包含来自源的ICS流媒体直播视频的视频VideoView控件。我想让VideoView在用户切换标签时继续播放以查看信息(称之为InformationView)。
在平板电脑上,我没有这个问题,因为屏幕尺寸更大,我总是在屏幕上制作VideoView。 在手机上,屏幕较小,因此必须使用标签。
据我所知,VideoView可能依赖于可见表面来绘制视频帧。当用户切换标签时,表面不可用于VideoView,因此它会自动停止。
我可以通过使用包含InformationView和VideoView的大滚动视图来解决这个问题。
有没有办法强制它继续播放(可能是通过绘制到一个看不见的表面)或者是否有第三方库通过使用巨大的scrollview来模仿'tab'行为,所以我不必编写更多的代码?
请注意,这与此处描述的多个VideoViews问题不同:One videoview blocked by another videoview
答案 0 :(得分:0)
确定解决方案是在切换标签时隐藏包含VideoView的片段,因此总有一个“表面”视频视图可以绘制。
答案 1 :(得分:0)
你可以自定义VideoView相同的默认值,但是你应该控制持有者表面,oncreatSurface,onchangeSurface()。
答案 2 :(得分:0)
这个概念的更好实现不是使用股票VideoView
小部件,这实际上只是将SurfaceView
和MediaPlayer
结合在一起,而是将这两个人联系起来并单独使用它们。如果您的应用程序直接控制MediaPlayer
,即使表面消失,也可以继续播放音轨。
将Activity
或Fragment
个SurfaceHolder.Callback
个实例附加到SurfaceView
后,您可以了解表面何时可用于绘图。然后,MediaPlayer
方法setDisplay()
和setSurface()
将在您的应用程序中用于附加和分离视频表面,当视频表面在每次回调的视图层次结构中可用时。
您也可以找到VideoView
有用的来源(link)来提供您自己的实现,以实现类似的目标。