import React, { useState, useEffect, useRef } from "react";
import { Text, View, TouchableOpacity } from "react-native";
import { Camera } from "expo-camera";
import {
Ionicons,
FontAwesome,
MaterialCommunityIcons,
} from "@expo/vector-icons";
import { useNavigation } from "@react-navigation/native";
import * as FileSystem from "expo-file-system";
import * as Permissions from "expo-permissions";
import * as MediaLibrary from "expo-media-library";
export default function ScreenCamera() {
const navigation = useNavigation();
const [hasPermission, setHasPermission] = useState(null);
const [rollPermision, setRollPermission] = useState(null);
const [type, setType] = useState(Camera.Constants.Type.back);
const cameraRef = useRef(null);
useEffect(() => {
(async () => {
//Ensure local photo direcotry exists.
console.log(
"ScreenCamera -> FileSystem.documentDirectory ",
FileSystem.documentDirectory
);
await FileSystem.makeDirectoryAsync(
FileSystem.documentDirectory + "photos"
).catch((e) => {
console.log(e, "Directoryc already exists");
});
const { status } = await Camera.requestPermissionsAsync();
setHasPermission(status === "granted");
// camera roll
const { cam_roll } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
setRollPermission(cam_roll === "granted");
})();
}, []);
const handleCameraType = () => {
setType(
type === Camera.Constants.Type.back
? Camera.Constants.Type.front
: Camera.Constants.Type.back
);
};
const handleTakePicture = async () => {
console.log("Taking the picture!");
if (cameraRef.current) {
const options = {
//quality: 0.5,
//base64: true,
//skipProcessing: true,
};
let photo = await cameraRef.current.takePictureAsync(options);
console.log("ScreenCamera -> photo", photo);
const filename = new Date().getTime() + ".jpg";
await FileSystem.copyAsync({
from: photo.uri,
to: FileSystem.documentDirectory + "photos/" + filename,
});
console.log(
"List of Files",
await FileSystem.readDirectoryAsync(FileSystem.documentDirectory),
await FileSystem.readDirectoryAsync(
FileSystem.documentDirectory + "photos"
)
);
//const asset = await MediaLibrary.createAssetAsync(photo.uri);
}
};
if (hasPermission === null) {
return ;
}
if (hasPermission === false) {
return No access to camera;
}
return (
{
navigation.push("MediaCache");
}}
style={{
alignSelf: "flex-end",
alignItems: "center",
backgroundColor: "transparent",
}}
>
);
}