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'} />
+
+
+
+ );
+}
+const styles = StyleSheet.create({
+ cameraContainer: {
+ flex: 1,
+ // flexDirection: 'row'
+ },
+ fixedRatio:{
+ flex: 1,
+ aspectRatio: 1
+ }
+})
\ No newline at end of file
diff --git a/screens/PatientProfileScreen.js b/screens/PatientProfileScreen.js
index 464cda0..3e862cb 100644
--- a/screens/PatientProfileScreen.js
+++ b/screens/PatientProfileScreen.js
@@ -11,7 +11,8 @@ export default function PatientProfileScreen({navigation}) {