0

手机只支持 Android 4.0+,没有其他第三方库。

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

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

我了解 VideoView 可能依赖于可见表面才能绘制视频帧。当用户切换选项卡时,该表面对 VideoView 不可用,因此它会自动停止。

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

有什么方法可以强制它继续播放(可能是通过绘制到不可见的表面)或者是否有第三方库通过使用巨大的滚动视图来模仿“标签”行为,这样我就不必编写更多代码?

请注意,这与此处描述的多个 VideoViews 问题不同:一个视频视图被另一个视频视图阻止

4

3 回答 3

0

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

于 2012-11-08T17:58:17.397 回答
0

这个概念的一个更好的实现是不使用 stockVideoView小部件,它实际上只是 aSurfaceView和 a 的结合MediaPlayer,而是将这两者分开并单独使用它们。如果您的应用程序MediaPlayer直接控制,即使在表面消失后也可以继续播放音轨。

将您的ActivityFragment其中一个SurfaceHolder.Callback实例附加到SurfaceView将使您知道该表面何时可用于绘图或不可用于绘图。这些MediaPlayer方法setDisplay()setSurface()然后将在您的应用程序中用于在每个回调在视图层次结构中可用时附加和分离视频表面。

您还可以在提出实现类似目标的自己的实现时找到VideoView有用的来源(链接)。

于 2012-11-08T18:39:58.080 回答
0

您可以自定义 VideoView 相同的默认值,但不同的是您应该控制支架表面、oncreatSurface、onchangeSurface()。

于 2012-11-08T18:27:58.840 回答