Java 当我的应用程序处于纵向模式时,在横向模式下使用相机
我想尽一切办法来达到我想要的行为,但似乎没有任何效果 我的应用程序在纵向模式下被锁定(我不想要横向界面),但我希望能够切换相机显示,在纵向模式和横向模式下交替显示相机预览 我对拍摄图像不感兴趣。 要以纵向显示预览,我只需执行以下操作:Java 当我的应用程序处于纵向模式时,在横向模式下使用相机,java,android,camera,screen-rotation,Java,Android,Camera,Screen Rotation,我想尽一切办法来达到我想要的行为,但似乎没有任何效果 我的应用程序在纵向模式下被锁定(我不想要横向界面),但我希望能够切换相机显示,在纵向模式和横向模式下交替显示相机预览 我对拍摄图像不感兴趣。 要以纵向显示预览,我只需执行以下操作: camera.setDisplayOrientation(90); 我的预览效果很好,但是,当我尝试在横向模式下显示相机预览时,我会: camera.setDisplayOrientation(0); 预览实际上是旋转的,但来自摄影机的图像没有旋转,最终的结果
camera.setDisplayOrientation(90);
我的预览效果很好,但是,当我尝试在横向模式下显示相机预览时,我会:
camera.setDisplayOrientation(0);
预览实际上是旋转的,但来自摄影机的图像没有旋转,最终的结果只是一个旋转到横向的肖像图像
我试过各种方法:
1) 使用参数旋转相机。setRotation()
但这只影响保存的最终图像,与预览无关
2) 设置参数。设置(“方向”、“横向”)
但这似乎没有效果(可能是一个旧的、尚未受支持的命令)
3) 设置以下方法的每一种组合,但什么都没有,有效旋转来自相机的图像的唯一方法似乎是物理旋转我的设备
这是我的意思的实际证明:
如您所见,parameters.setRotation()
do对预览没有影响,这在纵向中是正确的,但在横向中只是旋转,因为相机本身不旋转,而只是将纵向图像旋转
那么,当应用程序处于纵向模式时,有没有办法在横向模式下显示相机预览
谢谢。检查此方法以设置相机的方向。参数
orientation
为Display.getRotation(),您可以根据需要进行更改和设置:
public void setCameraOrientation(int orientation) {
int orientationDegree = 0;
switch (orientation) {
case Surface.ROTATION_0:
orientationDegree = 0;
break;
case Surface.ROTATION_90:
orientationDegree = 90;
break;
case Surface.ROTATION_180:
orientationDegree = 180;
break;
case Surface.ROTATION_270:
orientationDegree = 270;
break;
}
int displayOrientation = (cameraInfo.orientation - orientationDegree + 360) % 360;
camera.setDisplayOrientation(displayOrientation);
Camera.Parameters parameters = camera.getParameters();
parameters.setRotation(displayOrientation);
camera.setParameters(parameters);
}
有关整个上下文,请查看我的相机演示应用程序。特别是
CameraPreview
类。你看到这个问题了吗-@Alexandr是的,但正如我在问题中所说,我的问题不是最终保存的图像(我对捕获图像不感兴趣),而是预览。我的应用程序锁定在纵向,正如我在第1点中所说,参数.setRotation()
仅在最终捕获时对预览图像没有影响。我已经用实践演示更新了我的问题。