加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 当我的应用程序处于纵向时,在横向中使用相机

发布时间:2020-12-15 02:09:15 所属栏目:Java 来源:网络整理
导读:我已经尝试过各种方式来实现我想要的行为,但似乎没有任何工作. 我的应用程序被锁定在纵向模式(我不想要横向UI)但我希望能够切换相机显示以交替显示纵向和横向模式的相机预览. 我对拍摄图像不感兴趣. 要以纵向显示预览,我只需: camera.setDisplayOrientation
我已经尝试过各种方式来实现我想要的行为,但似乎没有任何工作.

我的应用程序被锁定在纵向模式(我不想要横向UI)但我希望能够切换相机显示以交替显示纵向和横向模式的相机预览.

我对拍摄图像不感兴趣.

要以纵向显示预览,我只需:

camera.setDisplayOrientation(90);

我的预览工作正常,但是,当我尝试在横向模式下显示相机预览时,我会:

camera.setDisplayOrientation(0);

并且预览实际上是旋转的,但是来自相机的图像没有旋转,最终结果只是旋转到横向的肖像图像.

我尝试过各种方式:

1)使用parameters.setRotation()旋转相机,但这只影响保存的最终图像,与预览无关;

2)设置parameters.set(“orientation”,“landscape”)但这似乎没有效果(可能是一个旧的,尚未支持的命令?);

3)设置下面方法的每个组合,但没有,有效旋转图像的唯一方法来自相机似乎是物理旋转我的设备…

这是我的意思的实际演示:

enter image description here

enter image description here

enter image description here

enter image description here

正如您所看到的,parameters.setRotation()对预览没有影响,这在纵向时是正确的,但只是在横向旋转,因为相机不会自行旋转,而只是旋转纵向图像.

那么,当应用程序处于纵向状态时,有没有办法在横向显示相机预览?

谢谢.

解决方法

查看此方法以设置相机的方向.参数方向是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);
}

对于整个上下文,请查看我的相机演示应用程序here.具体是CameraPreview类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读