切换类型

时间:2018-05-07 14:26:38

标签: android react-native react-native-camera

您正在使用哪种实施

RCTCamera

重现的步骤

在Android上,有一个RCTCamera视图,缩放道具设置为从this.state.zoom读取,然后执行

this.setState({
      zoom: [any level],
      type: [front type if current camera is back camera, back type if current camera is front camera],
    });

预期行为

另一台相机应该打开,变焦设置为变焦道具。

实际行为

另一台相机打开时根本没有设置缩放。

首次安装组件时,它可以正常工作,但之后没有。在尝试不同的方法时,我遇到了两个抛出的异常:

在某些情况下会抛出异常,因为setZoom()调用会在释放后尝试使用相机。

尝试在设置状态的同时直接通过React Native调用setZoom,或者作为setState中的回调参数时,它会抛出异常,因为它无法连接到摄像头服务。 setZoom。

当前和最接近工作的事情,至少在它没有直接抛出异常的范围内,就是上面的例子,它带有一些日志记录:

  

05-02 15:33:30.482 1953-1953 / com.appname D / zoom:CameraView setZoom调用,设置为30   05-02 15:33:30.482 1953-1953 / com.appname D / zoom:RCTCamera setZoom被调用,设置cameraType 1到30   05-02 15:33:30.672 345-11616 /? W / QCameraParameters:[PARM_DBG] zoom_level = 30   05-02 15:33:31.112 345-6416 /? W / QCameraParameters:[PARM_DBG] zoom_level = 0   05-02 15:33:35.572 1953-1953 / com.appname D / zoom:CameraView setZoom调用,设置为20   05-02 15:33:35.572 1953-1953 / com.appname D / zoom:RCTCamera setZoom调用,将cameraType 2设置为20   05-02 15:33:35.912 345-12088 /? W / QCameraParameters:[PARM_DBG] zoom_level = 20   05-02 15:33:36.312 345-31706 /? W / QCameraParameters:[PARM_DBG] zoom_level = 0

环境

  • Node.js版本:9.3
  • React Native version :0.55.2
  • React Native平台+平台版:Android 6.0.1,API 23

反应天然相机

版本:主分支,但RCTCamera部分是0.12的修改版本,因为RCTCamera比RNCamera更快地保存图片,并且有缩放缩放。

1 个答案:

答案 0 :(得分:0)

解决了它。对于遇到相同或类似非常具体问题的任何人:

切换相机类型时,相机参数实际设置两次。一旦作为setZoom()的一部分,它按预期工作,并再次作为adjustPreviewLayout()的一部分,它将setZoom()中的参数集清零。

由于这两个函数都在RTCamera.java中,我通过使setZoom()将变焦值存储在变量中(除了它已经在做的事情之外)解决了这个问题,然后让adjustPreviewLayout()设置缩放参数根据那个变量。

相关问题