【问题标题】:Properly handling rotation of camera (in TextureView)正确处理相机的旋转(在 TextureView 中)
【发布时间】:2013-07-10 14:03:06
【问题描述】:

我尝试在我的应用程序中使用相机,但我在正确处理配置更改时遇到了问题。我知道在典型的Activity(onSaveInstanceState 等...)中处理配置更改的正确方法,但这里不是这种情况。

将我的 Activity 想象成一个全屏相机预览,带有一个覆盖快门按钮和一个用于裁剪图像的框架

我正在努力实现的目标(现有 HTC Sense 相机预览):http://youtu.be/uzfUJUNHY68

也就是说:TextureView 上的相机预览不应该在旋转时重新创建,但 Activity 应该是方向感知的,以定位元素。

我很确定我不希望在旋转时重新创建 Activity。所以我尝试了android:configChanges 方法。问题是 onSurfaceTextureSizeChanged() 仍然被调用并且相机预览被旋转并且整个体验不流畅(预览滞后片刻并且被“重新创建”或其他东西)。

我尝试通过android:screenOrientation="landscape" 将我的活动锁定为横向,但这种方式onConfigurationChanged() 没有被调用,我不知道如何定位其他视图,如上面的视频。我想我可以听一些加速器事件,但我很确定有更好的方法。有吗?

【问题讨论】:

  • 前段时间我玩过股票相机的源代码(sdk 11 之前),看看他们是如何为我自己实现这种行为的。我不完全记得他们是如何做到的,但他们手动处理方向变化并在图像视图中旋转图像。可能值得一看,因为它以非常简单的方式实现。

标签: android android-camera


【解决方案1】:

Android camera source.

锁定活动轮换。在MyOrientationEventListeneronOrientationChanged 方法上,您可以旋转、更改视图位置等。我认为这是最好的方法。

【讨论】:

【解决方案2】:

试试这个选项。

android:configChanges="keyboardHidden|orientation|screenSize"

【讨论】:

  • 我已经尝试并在我的问题中写了它:“我很确定我不希望在旋转时重新创建 Activity。所以我尝试了 android:configChanges 方法。”
猜你喜欢
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多