渲染两个 RNCamera 组件时反应原生应用程序给出空白屏幕

Posted

技术标签:

【中文标题】渲染两个 RNCamera 组件时反应原生应用程序给出空白屏幕【英文标题】:React native app giving blank screen when rendering two RNCamera components 【发布时间】:2020-02-15 09:57:12 【问题描述】:

我正在尝试在一个屏幕中使用两个 RNCamera 组件,以便每个组件占据屏幕的一半,并且我可以同时显示后置和前置摄像头。

但不幸的是,当我添加第二个 RNCamera 组件时,该应用程序只会显示一个空白屏幕。有人可以帮我解决这个问题吗?

下面是我的代码。

<View style=styles.container>
        <View style= flex: 1 >
          <RNCamera
            ref=ref => 
              this.camera1 = ref;
            
            style=styles.preview
            type=RNCamera.Constants.Type.back
            flashMode=RNCamera.Constants.FlashMode.off
            androidCameraPermissionOptions=
              title: 'Permission to use camera',
              message: 'We need your permission to use your camera',
              buttonPositive: 'Ok',
              buttonNegative: 'Cancel',
            
            androidRecordAudioPermissionOptions=
              title: 'Permission to use audio recording',
              message: 'We need your permission to use your audio',
              buttonPositive: 'Ok',
              buttonNegative: 'Cancel',
            
            onGoogleVisionBarcodesDetected=( barcodes ) => 
              console.log(barcodes);
            
          />
        </View>
        <View style= flex: 1 >
          <RNCamera
            ref=ref => 
              this.camera2 = ref;
            
            style=styles.preview
            type=RNCamera.Constants.Type.back
            flashMode=RNCamera.Constants.FlashMode.off
            androidCameraPermissionOptions=
              title: 'Permission to use camera',
              message: 'We need your permission to use your camera',
              buttonPositive: 'Ok',
              buttonNegative: 'Cancel',
            
            androidRecordAudioPermissionOptions=
              title: 'Permission to use audio recording',
              message: 'We need your permission to use your audio',
              buttonPositive: 'Ok',
              buttonNegative: 'Cancel',
            
            onGoogleVisionBarcodesDetected=( barcodes ) => 
              console.log(barcodes);
            
          />
        </View>
        <View style= flex: 1, flexDirection: 'row', backgroundColor: 'yellow', justifyContent: 'center' >
          <TouchableOpacity onPress=this.takePicture.bind(this) style=styles.capture>
            <Text style= fontSize: 14 > SNAP </Text>
          </TouchableOpacity>
        </View>

【问题讨论】:

【参考方案1】:

我在一个视图中使用两个相机实例时遇到了同样的问题。事实证明 react-native-camera 的实现不支持它。所以我发现的唯一选择是使用来自github的fork

这是一个issue,对这个案例有很好的解释。

【讨论】:

谢谢,但根据 fork 上的文档,我没有任何运气来实现这一点。如果你已经实现了这个,你能分享一下你是怎么做到的吗?

以上是关于渲染两个 RNCamera 组件时反应原生应用程序给出空白屏幕的主要内容,如果未能解决你的问题,请参考以下文章

在录制视频时处理相机翻转而不停止它反应原生

如何在反应原生的子组件上重新渲染父组件?

从字符串变量反应原生渲染组件

使用上下文和钩子更新未安装组件的状态 - 反应原生

禁用反应原生按钮

条件渲染反应原生:只有其他部分正在工作