import React, { useState, useRef, useEffect } from 'react';
import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
import * as MediaLibrary from 'expo-media-library';
import { Camera } from 'expo-camera';
import { Video } from 'expo-av';
export default function App() {
//const [hasPermission, setHasPermission] = useState(null);
const [cameraType, setCameraType] = useState(Camera.Constants.Type.back);
const [isRecording, setIsRecording] = useState(false);
const cameraRef = useRef(null);
const videoRef = useRef(null);
const [hasCameraPermission, setHasCameraPermission] = useState(false);
const [hasMicPermission, setHasMicPermission] = useState(false);
useEffect(()=>{
(async () => {
const camStatus = await Camera.requestCameraPermissionsAsync();
if (camStatus.granted){
setHasCameraPermission(true)
}
const micStatus = await Camera.requestMicrophonePermissionsAsync();
if (micStatus.granted){
setHasMicPermission(true);}
})();
},[])
if (hasCameraPermission === null || hasMicPermission === null) {
return <View />;
}
const startRecord = async () => {
setIsRecording(true);
if (cameraRef.current) {
try {
const { uri } = await cameraRef.current.recordAsync();
console.log('Recording started:', uri);
} catch (error) {
console.error('Error starting recording:', error);
}
}
};
const stopRecord = async () => {
setIsRecording(false);
if (cameraRef.current) {
try {
const { uri } = await cameraRef.current.stopRecording();
await MediaLibrary.saveToLibraryAsync(uri);
console.log('Recording stopped:', uri);
} catch (error) {
console.error('Error stopping recording:', error);
}
}
}
const takePicture = async () => {
if (cameraRef.current) {
try {
const { uri } = await cameraRef.current.takePictureAsync();
await MediaLibrary.saveToLibraryAsync(uri);
console.log('Picture taken:', uri);
} catch (error) {
console.error('Error taking picture:', error);
}
}
};
const switchCamera = () => {
setCameraType(
cameraType === Camera.Constants.Type.back
? Camera.Constants.Type.front
: Camera.Constants.Type.back
);
};
return (
<View style={styles