如何使用Java在Android中获取相机的焦距
Posted
技术标签:
【中文标题】如何使用Java在Android中获取相机的焦距【英文标题】:How to get focal length of camera in Android using Java 【发布时间】:2022-01-07 21:34:27 【问题描述】:我想得到相机的焦距。我的目标 API 版本是 21+。我在文档的帮助下尝试了以下操作:
import android.hardware.Camera;
private float getFocalLengthHere()
float focalLength = Camera.Parameters.getFocalLength ();
return focalLength;
我遇到了以下错误:
不能从静态上下文引用非静态方法“getFocalLength()”
Here is attached image
在文档中,我没有找到任何可以使用 camera2 调用 Focal Length。
【问题讨论】:
这能回答你的问题吗? "Non-static method cannot be referenced from a static context" error @IvoBeckers 不是真的,我知道为什么我会收到这个错误,在这里我的查询也是,该方法调用在 API 级别 21 以下可用,但是提取当前调用的方法是什么版本即 API 级别 21+ 应该在这里developer.android.com/reference/android/hardware/camera2/… 【参考方案1】:你需要打开摄像头设备,先获取一个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];
这样更快,因为您无需打开相机即可获取信息。 请注意,支持物理变焦的相机可能会列出多个焦距;第一个是默认值。
【讨论】:
以上是关于如何使用Java在Android中获取相机的焦距的主要内容,如果未能解决你的问题,请参考以下文章