android - 正确处理相机的旋转(在 TextureView 中)

标签 android android-camera

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

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

我想要实现的目标(库存 HTC Sense 相机的预览):http://youtu.be/uzfUJUNHY68

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

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

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

最佳答案

Android camera source .

锁定 Activity 轮换。在 MyOrientationEventListener 的方法 onOrientationChanged 上,您可以旋转、更改 View 的位置等。我认为这是最好的方法。

关于android - 正确处理相机的旋转(在 TextureView 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17572728/

相关文章:

android - 如何在 Android Studio 中为文本添加下划线?

android - 如何在 Android 上使用 onPictureTaken 返回位图?

java - 当用户捕获图像时,如何检查 android 中当前打开的相机 ID(主要或次要)?

android - 在 android 中的 scrollView 之后没有小部件显示

android - 是否可以在抽屉布局中使用 ListView 以外的东西作为滑动抽屉

android - 如何查看一些Android类的代码?

android - android : Camera preview is stretched in Samsung Galaxy s4 mini issue android 中的多屏支持

android - Android CameraX 预览质量不佳(取景器)

android - MTK 设备中的 setPreviewTexture 失败

java - 火力地堡 : updatePhoneNumber for Current User who logged in with google