我用SurfaceView
和Camera Classes做了一个Camera Activity。
两个片段:当我们首先拍摄照片时,它会移动到第二个片段并显示刚拍摄的照片。 (就像new Intent(MediaStore.ACTION_IMAGE_CAPTURE)
)。
显示图片时会出现问题。当我以纵向模式拍摄照片时,它显示正常,就像第一张照片一样。
但我希望它看起来像第三个。
我认为问题出现是因为我在横向模式下翻转相机,手机不知道。 (很明显)但是当我打开旋转时,当我旋转手机时它会变为横向模式时会崩溃。
是否有任何方式相机自动知道用户正在横向模式下拍照,就像普通的Android相机应用程序一样?或者我的问题的任何解决方案都没问题。
我认为你的问题比你想象的要简单。
因此,在纵向模式下,您的设备会拍摄照片,例如1080p照片作为垂直图像。在first fragment
(使用SurfaceView
)拍摄风景照片(水平模式)时,您仍然可以拍摄照片作为照片。 1080p照片。
在second fragment
上查看照片时,默认情况下,您的设备无法知道照片的方向。它也可以是一张肖像照片。因此,在拍摄图像时,您需要为照片图像添加一个额外的属性(或捆绑到第二个片段),告诉第二个片段更改orientation
并在特定的orientation
中查看图像。
根据有限的信息,我得出结论,你的代码中没有错误(除了你提到的崩溃 - 我认为这与从捆绑中保存/恢复instanceState
有关) - 但只需要以正确的方向查看图像。
通常,图片方向保存在jpeg图像的EXIF标题中。有些设备不会在相机API中为您设置此标志,但都具有ExifInterface类。 support library使这更容易。
即使正确设置了标志,显示图片的片段也必须知道如何应用它才能正确显示。最简单的解决方案是使用Glyde或其他一些库。