10

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

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

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

在横向上,视频也可以正常工作

但现在回到肖像总是显示腐败

4

2 回答 2

4

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

由于我们在 AndroidManifest.xml 中指定我们要处理自己的方向更改,因此我们将屏幕大小调整为纵向或横向功能。

来自AndroidManifest.xml的源代码

android:configChanges="orientation|screenSize"

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

来自 Android 开发者

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

所以你不应该需要

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

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

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

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

随意改进和使用代码:)

于 2012-10-04T22:12:26.383 回答
0

原来我的整个测试用例都是错误的。直到我将简单的 videoview 示例归咎于错误的提交之前,一切都是根据这本书。但是我忘记了这android:configChanges="orientation"条线,并且在前面提到的提交之上添加这条线可以使一切正常工作而不会损坏视频。

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

于 2013-01-13T17:59:20.327 回答