【发布时间】:2012-06-11 00:37:49
【问题描述】:
我有一个充当服务的媒体播放器,我想更改显示表面视图并让视频在不同的活动中继续播放。
在文档中,它声明我可以在媒体播放器的任何状态下调用 setDisplay,并且在 ICS 上设置显示时,我会得到一个闪烁的视频图像。我看到视频的唯一方法是稍微拉下通知栏或执行一些导致像素被绘制的动作,比如改变音量。
设置很简单... 活动A |绑定到服务实例化媒体播放器附加表面并播放视频。 单击活动 A 中的链接,打开活动 B... 绑定到服务确保视频当前正在播放并将显示设置为不同的表面视图。
我尝试将表面视图的可见性设置为不可见/在以前的活动中消失...首先调用 setDisplay(null)....暂停然后恢复视频..并关闭绘图缓存。
任何帮助或建议将不胜感激。
编辑: android上的视频绝对可怕。 MediaPlayer 对象应该为可以检查的状态保存一个私有变量。错误代码也非常模糊。 VideoView 本身没有帮助,除非您想播放视频,仅此而已。基本上,操纵表面视图绝非易事,我假设这是因为表面视图的绘制方式与常规视图不同。
【问题讨论】:
-
对不起,我没有更好的解释,但这似乎已通过仅放置 setDisplay(null) 来解决。我有一个回调,当调用surfaceDestroyed 回调时,我将surfaceview 可见性设置为隐藏。取下它后,闪烁停止了。现在这仅适用于 ICS 和 Galaxy Note(非 ICS)我所拥有的只是黑屏,音频在 bg 中播放。所以如果有人有任何建议,我仍然需要帮助。
标签: android surfaceview android-mediaplayer