From b2c91f396229b71608922f7bce98ec44337d1dc8 Mon Sep 17 00:00:00 2001 From: Koreen Legaspi <36668830+koreenml@users.noreply.github.com> Date: Sat, 26 Feb 2022 12:55:54 -0500 Subject: [PATCH 1/2] implemented camera --- App.js | 4 +- package-lock.json | 95 ++++++++++++++++++++++++++++++--- package.json | 1 + screens/CameraScreen.js | 50 +++++++++++++++++ screens/PatientProfileScreen.js | 3 +- screens/index.js | 3 +- 6 files changed, 147 insertions(+), 9 deletions(-) create mode 100644 screens/CameraScreen.js diff --git a/App.js b/App.js index f2b07ec..a827fe3 100644 --- a/App.js +++ b/App.js @@ -1,7 +1,7 @@ import * as React from 'react'; import { NavigationContainer } from '@react-navigation/native'; import { createNativeStackNavigator } from '@react-navigation/native-stack'; -import { AdministratorLoginScreen, PatientLoginScreen, PatientProfileScreen, PatientHistoryScreen, AnalysisScreen } from './screens'; +import { AdministratorLoginScreen, PatientLoginScreen, PatientProfileScreen, PatientHistoryScreen, AnalysisScreen, CameraScreen } from './screens'; const Stack = createNativeStackNavigator(); @@ -14,6 +14,8 @@ export default function App() { + + diff --git a/package-lock.json b/package-lock.json index b13590c..6de20cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@react-navigation/native": "^6.0.7", "@react-navigation/native-stack": "^6.3.0", "expo": "^44.0.0", + "expo-camera": "~12.1.2", "expo-status-bar": "~1.2.0", "react": "17.0.1", "react-dom": "17.0.1", @@ -4176,6 +4177,14 @@ "node": ">= 0.6" } }, + "node_modules/dequal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-1.0.1.tgz", + "integrity": "sha512-Fx8jxibzkJX2aJgyfSdLhr9tlRoTnHKrRJuu2XHlAgKioN2j19/Bcbe0d4mFXYZ3+wpE2KVobUVTfDutcD17xQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -4517,6 +4526,44 @@ "url-parse": "^1.4.4" } }, + "node_modules/expo-camera": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/expo-camera/-/expo-camera-12.1.2.tgz", + "integrity": "sha512-Rr0Evj1V3LGiZE5/YBuuVimuU9uSTwVoqtSBsZ8QoK11+g9vnu2NgBjFMb938yjWD5tqJiXRH8lVTM2mvzSmIQ==", + "dependencies": { + "@expo/config-plugins": "^4.0.2", + "@koale/useworker": "^4.0.2", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-camera/node_modules/@koale/useworker": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@koale/useworker/-/useworker-4.0.2.tgz", + "integrity": "sha512-xPIPADtom8/3/4FLNj7MvNcBM/Z2FleH85Fdx2O869eoKW8+PoEgtSVvoxWjCWMA46Sm9A5/R1TyzNGc+yM0wg==", + "dependencies": { + "dequal": "^1.0.0" + }, + "peerDependencies": { + "react": "^16.8.0" + } + }, + "node_modules/expo-camera/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/expo-constants": { "version": "13.0.2", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.0.2.tgz", @@ -9449,9 +9496,9 @@ "deprecated": "Please see https://github.com/lydell/urix#deprecated" }, "node_modules/url-parse": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz", - "integrity": "sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA==", + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.8.tgz", + "integrity": "sha512-9JZ5zDrn9wJoOy/t+rH00HHejbU8dq9VsOYVu272TYDrCiyVAgHKUSpPh3ruZIpv8PMVR+NXLZvfRPJv8xAcQw==", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -12889,6 +12936,11 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, + "dequal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-1.0.1.tgz", + "integrity": "sha512-Fx8jxibzkJX2aJgyfSdLhr9tlRoTnHKrRJuu2XHlAgKioN2j19/Bcbe0d4mFXYZ3+wpE2KVobUVTfDutcD17xQ==" + }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -13159,6 +13211,37 @@ "url-parse": "^1.4.4" } }, + "expo-camera": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/expo-camera/-/expo-camera-12.1.2.tgz", + "integrity": "sha512-Rr0Evj1V3LGiZE5/YBuuVimuU9uSTwVoqtSBsZ8QoK11+g9vnu2NgBjFMb938yjWD5tqJiXRH8lVTM2mvzSmIQ==", + "requires": { + "@expo/config-plugins": "^4.0.2", + "@koale/useworker": "^4.0.2", + "invariant": "^2.2.4" + }, + "dependencies": { + "@koale/useworker": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@koale/useworker/-/useworker-4.0.2.tgz", + "integrity": "sha512-xPIPADtom8/3/4FLNj7MvNcBM/Z2FleH85Fdx2O869eoKW8+PoEgtSVvoxWjCWMA46Sm9A5/R1TyzNGc+yM0wg==", + "requires": { + "dequal": "^1.0.0" + } + }, + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + } + } + }, "expo-constants": { "version": "13.0.2", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.0.2.tgz", @@ -17010,9 +17093,9 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" }, "url-parse": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz", - "integrity": "sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA==", + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.8.tgz", + "integrity": "sha512-9JZ5zDrn9wJoOy/t+rH00HHejbU8dq9VsOYVu272TYDrCiyVAgHKUSpPh3ruZIpv8PMVR+NXLZvfRPJv8xAcQw==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" diff --git a/package.json b/package.json index 8b78047..6ad78ac 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@react-navigation/native": "^6.0.7", "@react-navigation/native-stack": "^6.3.0", "expo": "^44.0.0", + "expo-camera": "~12.1.2", "expo-status-bar": "~1.2.0", "react": "17.0.1", "react-dom": "17.0.1", diff --git a/screens/CameraScreen.js b/screens/CameraScreen.js new file mode 100644 index 0000000..a923302 --- /dev/null +++ b/screens/CameraScreen.js @@ -0,0 +1,50 @@ +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.requestPermissionsAsync(); + setHasCameraPermission(cameraStatus.status === 'granted'); +})(); + }, []); +const takePicture = async () => { + if(camera){ + const data = await camera.takePictureAsync(null) + setImage(data.uri); + } + } + + if (hasCameraPermission === false) { + return No access to camera; + } + return ( + + + setCamera(ref)} + style={styles.fixedRatio} + type={type} + ratio={'1:1'} /> + + + + +