切换选项卡时保持VideoView(Android ICS +)播放

时间:2012-11-08 17:45:11

标签: android android-videoview

仅限Android 4.0及更高版本的电话。

应用程序使用ActionBar的导航选项卡。其中一个选项卡包含来自源的ICS流媒体直播视频的视频VideoView控件。我想让VideoView在用户切换标签时继续播放以查看信息(称之为InformationView)。

在平板电脑上,我没有这个问题,因为屏幕尺寸更大,我总是在屏幕上制作VideoView。 在手机上,屏幕较小,因此必须使用标签。

据我所知,VideoView可能依赖于可见表面来绘制视频帧。当用户切换标签时,表面不可用于VideoView,因此它会自动停止。

我可以通过使用包含InformationView和VideoView的大滚动视图来解决这个问题。

有没有办法强制它继续播放(可能是通过绘制到一个看不见的表面)或者是否有第三方库通过使用巨大的scrollview来模仿'tab'行为,所以我不必编写更多的代码?

请注意,这与此处描述的多个VideoViews问题不同:One videoview blocked by another videoview

3 个答案:

答案 0 :(得分:0)

确定解决方案是在切换标签时隐藏包含VideoView的片段,因此总有一个“表面”视频视图可以绘制。

答案 1 :(得分:0)

你可以自定义VideoView相同的默认值,但是你应该控制持有者表面,oncreatSurface,onchangeSurface()。

答案 2 :(得分:0)

这个概念的更好实现不是使用股票VideoView小部件,这实际上只是将SurfaceViewMediaPlayer结合在一起,而是将这两个人联系起来并单独使用它们。如果您的应用程序直接控制MediaPlayer,即使表面消失,也可以继续播放音轨。

ActivityFragmentSurfaceHolder.Callback个实例附加到SurfaceView后,您可以了解表面何时可用于绘图。然后,MediaPlayer方法setDisplay()setSurface()将在您的应用程序中用于附加和分离视频表面,当视频表面在每次回调的视图层次结构中可用时。

您也可以找到VideoView有用的来源(link)来提供您自己的实现,以实现类似的目标。

相关问题