检测相机传感器处于反向横向(Nexus 5后置摄像头)

时间:2016-02-18 11:38:38

标签: android android-camera

我需要能够检测到设备上的反向横向传感器。

这是我用来检测反向横向的代码,但似乎不适用于Nexus 5X:

public boolean isSensorInReverseLandscape() {
    return ((getCameraPosition().equals(Position.FRONT) && mCameraInfo.orientation == 90) ||
            (getCameraPosition().equals(Position.BACK) && mCameraInfo.orientation == 270));
}

对于我的Nexus 6P似乎工作正常,它的前置摄像头传感器处于反向风景,因此前后摄像头的方向返回90(当普通前置摄像头返回270时)。然而,Nexus 5X CameraInfo.orientation似乎返回90,这与您的正常后置摄像头方向相同。

有没有其他可靠的方法来检测相机传感器是否处于反向环境中?不幸的是,我没有可以使用的设备。

编辑:

查看CameraInfo文档:

  

public int orientation

     

在API级别9中添加   摄像机图像的方向。该值是摄像机图像需要顺时针旋转的角度,因此它在显示屏上以其自然方向正确显示。它应该是0,90,180或270。

     

例如,假设设备具有自然高的屏幕。 后置摄像头传感器以横向安装。你在看屏幕。如果相机传感器的顶部与自然方向的屏幕右边缘对齐,则值应为90.如果前置摄像头传感器的顶部与屏幕右侧对齐,则值应为是270。

那么为什么背面朝向相机传感器安装在反向横向还会报告90?那很奇怪..

编辑2:

获取相机信息的代码:

 for (int i = 0; i < Camera.getNumberOfCameras(); i++) {
        int cameraId = i;
        CameraInfo cameraInfo = new CameraInfo();
        Camera.getCameraInfo(i, cameraInfo);

        CameraLegacy camera = new CameraLegacy(cameraId, cameraInfo, mContext, mMode);
        cameras.add(camera);
    }

CameraLegacy将信息保存到mCamraInfo。

编辑3:

这是相机构造函数输出方向的方式:

02-19 18:48:01.832: D/CameraController(8093): .findAvailableCameraDevices() - entered
02-19 18:48:01.833: D/CameraController(8093): .findAvailableCameraDevices() - camera id is 0
02-19 18:48:01.833: D/CameraController(8093): .findAvailableCameraDevices() - camera orientation is 90
02-19 18:48:01.994: D/CameraLegacy(8093): CameraLegacy() - camera orientation in constructor is 90
02-19 18:48:01.994: D/CameraController(8093): .findAvailableCameraDevices() - camera id is 1
02-19 18:48:01.995: D/CameraController(8093): .findAvailableCameraDevices() - camera orientation is 270
02-19 18:48:01.995: D/CameraLegacy(8093): CameraLegacy() - camera orientation in constructor is 270

0 个答案:

没有答案