如何在Android设备中获取相机传感器尺寸?

时间:2011-11-12 11:49:34

标签: android camera android-camera

谁能知道如何在Android设备中获取相机的传感器尺寸?

由于

2 个答案:

答案 0 :(得分:8)

从API级别21开始是可能的。从文档(https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#SENSOR_INFO_PHYSICAL_SIZE):

  

public static final Key SENSOR_INFO_PHYSICAL_SIZE

     

全像素阵列的物理尺寸。 [...]

     

单位:毫米

我使用这种代码。请注意,可能不只是一台摄像机:

import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;

private SizeF getCameraResolution(int camNum)
{
    SizeF size = new SizeF(0,0);
    CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    try {
        String[] cameraIds = manager.getCameraIdList();
        if (cameraIds.length > camNum) {
            CameraCharacteristics character = manager.getCameraCharacteristics(cameraIds[camNum]);
            size = character.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE);
        }
    }
    catch (CameraAccessException e)
    {
        Log.e("YourLogString", e.getMessage(), e);
    }
    return size;
}

请注意,需要捕获异常CameraAccessException

不要忘记将<uses-sdk android:minSdkVersion="21" />添加到您的清单中。

答案 1 :(得分:0)

使用Camera1 Api也很容易获得相机传感器的宽度和高度。获得水平和垂直视角和焦距,其余的是三角测量。

Camera.Parameters params = mCamera.getParameters();
focalLength = params.getFocalLength();
horizontalViewAngle = params.getHorizontalViewAngle();
verticalViewAngle = params.getVerticalViewAngle();

A =视角,l =焦距,h =传感器高度/ 2 =&gt; tan(A / 2)= h / l

我的设备焦距为1.15 mm,水平视角为54.8度:

传感器宽度= tan(54.8 / 2)* 2 * 1.15 = 1.19mm

此值与使用DomTomCat方法发布的内容相同。