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

Posted

技术标签:

【中文标题】如何在 Android 设备中获取相机传感器尺寸?【英文标题】:How to get Camera Sensor Size in android device? 【发布时间】:2011-12-27 14:28:13 【问题描述】:

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

谢谢

【问题讨论】:

【参考方案1】:

从 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" /> 添加到您的清单中。

【讨论】:

完美的解决方案,但是,如何在21 API之前的版本中获得相同的值? 这个方法也是写吗? ***.com/a/41032402/4548520 似乎在某些设备上无法正常工作。使用此传感器信息大小进行计算时,我得到的相机角度不正确。仅对于某些设备,我在使用 Camera2 API 和 Camera Legacy API 时得到相同的结果【参考方案2】:

使用 Camera1 Api 也很容易获得相机传感器的宽度和高度。获取水平和垂直视角和焦距,剩下的就是小三角函数。

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

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

对于我的焦距为 1.15 毫米、水平视角为 54.8 度的设备:

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

这个值与我使用 DomTomCat 发布的方法得到的值相同。

【讨论】:

以上是关于如何在 Android 设备中获取相机传感器尺寸?的主要内容,如果未能解决你的问题,请参考以下文章

Android中的相机,如何获得最佳尺寸,预览尺寸,图片尺寸,视图尺寸,图像失真

Android Camera旋转角度

android Camera 如何 获取最佳合适的尺寸

android Camera 如何 获取最佳合适的尺寸

如何在android中设置相机预览的大小

获取android相机设备的视角