如何解决Camera.Parameters.setZoom在设备之间不一致,在某些设备中它会放大更多
我正在制作一个自定义相机应用,为此我正在使用Android Camera API。我知道此API现在已被弃用,建议使用Camera2 API。 但是我只需要预览相机即可。
下面是用于设置缩放比例的代码
Camera.Parameters parameters = camera.getParameters();
parameters.setZoom(30);
parameters.setPreviewFpsRange(
previewFpsRange[Camera.Parameters.PREVIEW_FPS_MIN_INDEX],previewFpsRange[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]);
parameters.setPreviewFormat(IMAGE_FORMAT);
camera.setParameters(parameters);
现在,问题是相机在各个设备上的变焦不相等,某些设备放大很多,而有些设备变焦很大。
我无法在互联网上找到与此相关的任何解释。
无论摄像机的质量和MP如何,我都需要在所有Android设备上使用相同的缩放级别。
解决方法
Camera.Parameters.setZoom()的合法值从0变为Camera.Parameters.getMaxZoom(),您可以在Documentation of setZoom()中阅读
您需要做的是对所有设备上的缩放系数进行归一化,可以通过以下方法完成:
private setZoom(float zoom) {//to me,here zoom 0 to 1
try {
if (isCameraOpened() && mCameraParameters.isZoomSupported()) {
int maxZoom = mCameraParameters.getMaxZoom();
int scaledValue = (int) (zoom * maxZoom);
mCameraParameters.setZoom(scaledValue);
mZoom = zoom;
mCamera.setParameters(mCameraParameters);
}
} catch (Exception | Error throwable) {
Log.e(TAG,Objects.requireNonNull(throwable.getMessage()));
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。