相机状态就绪时的 React-native-camera flash 权限视图

Posted

技术标签:

【中文标题】相机状态就绪时的 React-native-camera flash 权限视图【英文标题】:React-native-camera flash permission view when camera status is ready 【发布时间】:2019-04-28 03:50:06 【问题描述】:

我正在使用带有子功能的反应本机相机,如图所示或文档 (https://github.com/react-native-community/react-native-camera/blob/master/docs/RNCamera.md)。当我尝试第一次尝试使用相机时,它会显示按原样工作的权限视图。但是每次我想使用相机第一次使用后,即使状态为“READY”,应用程序也会快速闪烁权限视图。我发现问题是 RNCamera 带来了摄像头和状态信息,但是在安装组件后状态值会更新。

值从“PENDIN AUTHORIZATION”跳转到“READY”,这就是它闪烁授权视图的原因。是否有任何解决方法,以便我第一次使用相机时按预期工作,然后在另一次使用中,相机不显示授权视图而是相机本身?提前致谢

<RNCamera>
  ( camera, status ) => 
     if (status === 'READY')
        return ( <View>.....Camera.... </View>
        )
     
     else if (status !== 'READY')
        return (<CameraPermission/>)
     
  
</RNCamera>

【问题讨论】:

【参考方案1】:

您不必自己处理获取权限,RNCamera 会自动处理。像这样定义你的相机:

'use strict';
import React,  Component  from 'react';
import  AppRegistry, StyleSheet, Text, TouchableOpacity, View  from 'react-native';
import  RNCamera  from 'react-native-camera';

class BadInstagramCloneApp extends Component 
  render() 
    return (
      <View style=styles.container>
        <RNCamera
          ref=ref => 
            this.camera = ref;
          
          style=styles.preview
          type=RNCamera.Constants.Type.back
          flashMode=RNCamera.Constants.FlashMode.on
          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 style= flex: 0, flexDirection: 'row', justifyContent: 'center' >
          <TouchableOpacity onPress=this.takePicture.bind(this) style=styles.capture>
            <Text style= fontSize: 14 > SNAP </Text>
          </TouchableOpacity>
        </View>
      </View>
    );
  

  takePicture = async function() 
    if (this.camera) 
      const options =  quality: 0.5, base64: true ;
      const data = await this.camera.takePictureAsync(options);
      console.log(data.uri);
    
  ;


const styles = StyleSheet.create(
  container: 
    flex: 1,
    flexDirection: 'column',
    backgroundColor: 'black',
  ,
  preview: 
    flex: 1,
    justifyContent: 'flex-end',
    alignItems: 'center',
  ,
  capture: 
    flex: 0,
    backgroundColor: '#fff',
    borderRadius: 5,
    padding: 15,
    paddingHorizontal: 20,
    alignSelf: 'center',
    margin: 20,
  ,
);

AppRegistry.registerComponent('BadInstagramCloneApp', () => BadInstagramCloneApp);

【讨论】:

阅读文档!我正在使用带有函数 childs 的 RNCamera,因为我在 RNCamera 标记中制作了自定义相机视图,正如文档所解释的那样。尽管如此,使用您首先使用的解决方案,仍然会闪烁权限视图,因为组件等待“READY”值继续到相机本身 只能在Android上提示权限吗?我找不到等效的 ios 功能

以上是关于相机状态就绪时的 React-native-camera flash 权限视图的主要内容,如果未能解决你的问题,请参考以下文章

操作系统--进程管理(Processing management)

进程三种基本状态

线程的状态

拍摄快照并保存到相机胶卷时的 iOS 图像大小

[C#] 多线程总结(结合进度条)

c#中关于启动进程时的参数传递问题