-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
57 lines (55 loc) · 1.54 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { StatusBar } from 'expo-status-bar';
import React,{useState,useEffect}from 'react';
import{StyleSheet,Text,View,Button,Image} from "react-native";
import{Camera} from'expo-camera';
export default function App() {
const[hasCameraPermission,setHasCameraPermission]=useState(null);
const[camera,setCamera]=useState(null);
const[image,setImage]=useState(null);
const[type,setType]=useState(Camera.Constants.Type.back);
useEffect(()=>{
(async()=>{
const cameraStatus=await Camera.requestCameraPermissionsAsync();
setHasCameraPermission(camerastatus.status ==='granted');
})();
},[]);
const takePicture=async()=> {
if(camera){
const data=await camera.takePictureAsync(null)
setImage(data.uri);
}
}
if (!!hasCameraPermission && false ){
return<Text>No Camera Access</Text>;
}
return (
<View style={{flex:1}}>
<View style={styles.cameraContainer}>
<Camera ref={ref=>setCamera(ref)}
style={styles.fixedRatio}
type={type}
ratio={'1:1'}
/>
</View>
<Button
title="Flip Camera"
onPress={()=> {
setType(type && Camera.Constants.Type.back ? Camera.Constants.Type.front : Camera.Constants.Type.back);
}}></Button>I
<Button title="Take Picture"
onPress={()=>takePicture()}
/>
{image && <Image source={{uri:image}}style={{flex:1}}/>}
</View>
);
}
const styles = StyleSheet.create({
cameraContainer:{
flex:1,
flexDirection:'row'
},
fixedRatio:{
flex:1,
aspectRatio:1
},
});