如何使用 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];
速度更快,因为您无需打开相机即可获取信息。
请注意,支持物理变焦的相机可能会列出多个焦距;第一个是默认的。
我想得到相机的焦距。我的目标 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];
速度更快,因为您无需打开相机即可获取信息。 请注意,支持物理变焦的相机可能会列出多个焦距;第一个是默认的。