react-native - react native如何打开相机拍照?
问题描述
当用户单击按钮时,我想从我的应用程序中打开设备摄像头,当用户单击后退按钮时,它应该从设备摄像头对我的应用程序做出反应。我可以通过运行 react native 项目打开相机并拍照。但我想做相机在什么应用程序中的工作方式。那就是点击按钮->打开相机->发送按钮。
我是本地反应的初学者。我尝试了很多方法,但我不知道如何完成。
任何人都可以帮助我做到这一点。
我的 App.js 代码是,
'use strict';
import React, { Component } from 'react';
import {
AppRegistry,
Dimensions,
StyleSheet,
Text,
TouchableHighlight,
View
} from 'react-native';
import Camera from 'react-native-camera';
class BadInstagramCloneApp extends Component {
render() {
return (
<View style={styles.container}>
<Camera
ref={(cam) => {
this.camera = cam;
}}
style={styles.preview}
aspect={Camera.constants.Aspect.fill}>
<Text style={styles.capture} onPress={this.takePicture.bind(this)}>[CAPTURE]</Text>
</Camera>
</View>
);
}
takePicture() {
const options = {};
//options.location = ...
this.camera.capture({metadata: options})
.then((data) => console.log(data))
.catch(err => console.error(err));
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: 'row',
},
preview: {
flex: 1,
justifyContent: 'flex-end',
alignItems: 'center'
},
capture: {
flex: 0,
backgroundColor: '#fff',
borderRadius: 5,
color: '#000',
padding: 10,
margin: 40
}
});
AppRegistry.registerComponent('BadInstagramCloneApp', () => BadInstagramCloneApp);
解决方案
您可以使用状态来显示/隐藏相机视图/组件。请检查以下代码:
...
class BadInstagramCloneApp extends Component {
constructor(props) {
super(props);
this.state = {
isCameraVisiable: false
}
}
showCameraView = () => {
this.setState({ isCameraVisible: true });
}
render() {
const { isCameraVisible } = this.state;
return (
<View style={styles.container}>
{!isCameraVisible &&<Button title="Show me Camera" onPress={this.showCameraView} />}
{isCameraVisible &&
<Camera
ref={(cam) => {
this.camera = cam;
}}
style={styles.preview}
aspect={Camera.constants.Aspect.fill}>
<Text style={styles.capture} onPress={this.takePicture.bind(this)}>[CAPTURE]</Text>
</Camera>}
</View>
);
}
takePicture() {
const options = {};
//options.location = ...
this.camera.capture({metadata: options})
.then((data) => {
console.log(data);
this.setState({ isCameraVisible: false });
}
.catch(err => console.error(err));
}
}
...
推荐阅读
- typescript - 为数组结构化数据创建接口 - Typescript
- javascript - 有没有一种方法可以在不使用各种不同方法的情况下改变字符串?
- javascript - Vue 2 Prop 值未在模板中呈现
- python - 面板/选项卡选择上的散景 python 回调
- angular - 如何根据智能表中下拉列表的选定值显示列中的值
- c# - 在正则表达式匹配字符中获取行号和位置的最简单方法是什么?
- java - 如何禁用所有 JAVA 进程的核心转储
- python - 如何使用来自另一个模型的外键创建两个选择字段?
- javascript - 转换 Ajax 以停止使用 jQuery
- flutter - Flutter - 如何隐藏或设置 tablerow 可见?