【问题标题】:Avoid Android VideoView corruption when rotating back to portrait旋转回纵向时避免 Android VideoView 损坏
【发布时间】:2011-09-25 08:42:49
【问题描述】:

我已经设法编写了一个有限的视频播放器,能够从互联网上查看 .3gp 文件。视频将以全屏居中显示,保持视频纵横比。此外,旋转不会中断视频,视频会继续播放而不会出现问题。

一切似乎都很好,但是...在我的 HTC Legend 上,当您旋转回纵向时,视频已损坏,并且不是全屏显示,而是以其原始像素大小显示。但是再次旋转到风景作品并完美显示。任何想法为什么?不幸的是,我没有更多的硬件来测试它,而且我已经没有想法可以测试了。

您可以从https://github.com/gradha/Android-video-stream-rotation 获取完整的示例源代码。这是我打开应用程序的屏幕截图,旋转到横向,触摸屏幕以显示视频控件,然后旋转回纵向以查看损坏情况。

【问题讨论】:

    标签: android corruption android-videoview screen-rotation


    【解决方案1】:

    https://github.com/gradha/Android-video-stream-rotation 的源代码中。您添加了评论:

    由于我们在 我们想要处理我们自己的方向的 AndroidManifest.xml 变化,我们调整屏幕的功能是纵向或 风景。

    来自AndroidManifest.xml源代码

    android:configChanges="orientation|screenSize"
    

    所以,如果您将此属性添加到清单中的活动元素,我会解释为活动将处理所有方向更改?不是你吗?

    来自 Android 开发者

    要声明您的活动处理配置更改,请编辑 清单文件中的适当活动元素以包含 android:configChanges 属性...more

    所以您应该不需要

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }
    

    我创建了一个测试项目来检查是否是这种情况:

    旋转视频流示例:https://github.com/TouchBoarder/RotatingVideoStream

    我的结论: 我不需要覆盖 Activity 中的“onConfigurationChanged”来正确显示纵向和横向视频,并且视频会在旋转变化时继续播放。

    随意改进和使用代码:)

    【讨论】:

    • 您的结论是错误的:如果我删除该方法,视频仍然显示视频损坏。 OTOH,您的示例适用于我的设备,因此罪魁祸首在其他地方。如果我有时间,我会寻找两个项目之间的其他变化。
    • 将您的答案标记为正确以提供缺失的链接。
    • 如果你的目标是 android >= 13,你必须把 android:configChanges="orientation|screenSize" 除了 android:configChanges="orientation"
    • 您的视频流示例链接已失效。请提供工作代码。 @TouchBoarder
    【解决方案2】:

    原来我的整个测试用例都是错误的。直到the commit where I blame the easy videoview example on being wrong 一切都按照书上的规定进行。但是我忘记了 android:configChanges="orientation" 行,在前面提到的提交之上添加这一行可以让一切正常工作而不会损坏视频。

    我会将 hsigmond 的答案标记为有效,以提供一个我可以比较并找出真正问题的测试示例。基于问题Android VideoView orientation change with buffered video,我使用自定义方向处理程序和VideoView 的子类来解决这个问题是错误的并且不正确。并不是说 that 是错误的,我只是错误地应用了它(加上那里的其他答案也提到了缺少的android:configChanges)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-17
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 2012-10-18
      • 1970-01-01
      相关资源
      最近更新 更多