微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Camera.Parameters.setZoom在设备之间不一致,在某些设备中它会放大更多

如何解决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 举报,一经查实,本站将立刻删除。