如何使用 Java 在 Android 中获取相机的焦距

How to get focal length of camera in Android using Java

我想得到相机的焦距。我的目标 API 版本是 21+。我在文档的帮助下尝试了以下操作:

import android.hardware.Camera;

private float getFocalLengthHere() {

    float focalLength = Camera.Parameters.getFocalLength ();  
    return  focalLength;
}

我遇到了以下错误:

Non-static method 'getFocalLength()' cannot be referenced from a static context

Here is attached image

在文档中,我没有找到任何与 camera2 调用焦距的内容。

您需要打开摄像头设备,先获取一个Parameter对象,然后在其上调用getFocalLength:

   Camera myCamera = Camera.open(<camera id>);
   float focalLength = myCamera.getParameters().getFocalLength();
   myCamera.close();

但那是已弃用的相机 API。使用较新的 Camera2 API,您可以:

   CameraCharacteristics = CameraManager.getCameraCharacteristics(<camera id>);
   float focalLength = CameraCharacteristics.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS)[0];

速度更快,因为您无需打开相机即可获取信息。 请注意,支持物理变焦的相机可能会列出多个焦距;第一个是默认的。