我使用SurfaceView
和“相机类”进行了“相机活动”。
两个片段:当我们首先拍摄照片时,它将移至第二个片段,并显示刚刚拍摄的照片。
(就像new Intent(MediaStore.ACTION_IMAGE_CAPTURE)
一样。)
显示图片时出现问题。 当我以人像模式拍摄照片时,它可以很好地显示,就像第一张照片一样。
但是,当我以横向模式拍摄照片时,它像下面的第二张照片一样显示。
但是我希望它看起来像第三个。
我认为出现此问题的原因是,仅因为我在横向模式下翻转了相机,电话才知道它。 (显而易见)但是,当我打开旋转按钮时,当我旋转手机时将其更改为横向模式时,它会崩溃。
照相机是否有任何办法像普通的android照相机应用程序那样自动知道用户正在横向拍摄照片? 或任何解决我的问题的方法都可以。
答案 0 :(得分:0)
我认为您的问题比您想象的要简单。
因此,在人像模式下,您的设备会拍摄照片,例如1080p照片作为垂直图像。在first fragment
(使用SurfaceView
)中以风景(水平模式)拍摄照片时,您仍在拍摄照片,例如1080p照片。
在second fragment
上查看照片时,默认情况下您的设备不知道照片的方向。它也可以是人像照片。因此,在拍摄图像时,您需要向照片图像添加一个附加属性(或在第二个片段中捆绑),告诉第二个片段更改{{1} },然后在特定的orientation
中查看图像。
基于有限的信息,我得出的结论是您的代码中没有错误(除了您提到的崩溃,我认为这与保存/恢复orientation
有关包)-但只需以正确的方向查看图像即可。
答案 1 :(得分:0)
通常,图片方向保存在jpeg图像的EXIF标头中。某些设备不会在Camera API中为您设置此标志,但是所有设备都具有ExifInterface类。 support library使这个过程变得更加容易。
即使正确设置了标志,显示图片的片段也必须知道如何应用它以正确显示。最简单的解决方案是使用Glyde或其他一些库。