Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我的应用程序处于纵向模式时,在横向模式下使用相机_Java_Android_Camera_Screen Rotation - Fatal编程技术网

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()
仅在最终捕获时对预览图像没有影响。我已经用实践演示更新了我的问题。