相机状态就绪时的 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 权限视图的主要内容,如果未能解决你的问题,请参考以下文章