我正在出于学习目的开发React Native应用程序。我正在使用此软件包https://github.com/react-native-community/react-native-camera。但是,当我打开相机页面/屏幕时,它只是显示空白屏幕,顶部有一个微调框,如下所示。
这是我的代码。
import React, { PureComponent } from "react";
import {
StyleSheet,
Text,
TouchableOpacity,
View
} from "react-native";
import { RNCamera } from "react-native-camera";
class EventDetails extends PureComponent {
constructor(props) {
super(props);
}
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 () => {
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
}
});
export default EventDetails;
我的代码有什么问题?
这是我的iOS plist文件,用于权限。
答案 0 :(得分:1)
您已正确完成此操作,但是您必须知道相机无法在模拟器上工作,但可以在外部设备上正常工作
答案 1 :(得分:-1)
重要提示: 在ios文件夹中,手动链接库后,执行命令“ pod install”。这解决了我的问题。