Я сейчас работаю над собственным приложением. Я хотел бы использовать камеру с пакетом «Экспо».
Мне удается отобразить камеру, но когда я переключаюсь между своими компонентами (компонент главного меню / компонент настроек) и возвращаюсь к компоненту камеры, предварительный просмотр камеры становится черным.
Фактически это та же проблема, что и здесь: https://github.com/expo/expo/issues/5952
Я использовал предложенное решение, но оно все еще не работает.
import React, { useState, useEffect } from 'react';
import { Text, View, TouchableOpacity, Dimensions } from 'react-native';
import { Camera } from 'expo-camera';
import { useFocusEffect, useNavigation } from '@react-navigation/native';
import { FontAwesome, Ionicons,MaterialCommunityIcons } from '@expo/vector-icons';
import { withNavigationFocus } from 'react-navigation';
import * as Permissions from 'expo-permissions'
import styles from './styles';
class CameraPage extends React.Component {
camera = null;
state = {
hasCameraPermission: null,
};
async componentDidMount() {
const camera = await Permissions.askAsync(Permissions.CAMERA);
const hasCameraPermission = (camera.status === 'granted');
this.setState({ hasCameraPermission });
};
render() {
const { hasCameraPermission } = this.state;
if (hasCameraPermission === null) {
return <View />;
} else if (hasCameraPermission === false) {
return <Text>Access to camera has been denied.</Text>;
}
else if (this.props.isFocused)
{
return (
<View style={{ flex: 1 }}>
<Camera style={{ flex: 1 }} type={this.state.cameraType}>
</Camera>
<Text> IS FOCUS </Text>
</View>
)
}
};
};
export default withNavigationFocus(CameraPage);
Приложение запускается по умолчанию в компоненте камеры отображается предварительный просмотр камеры. Как я уже сказал, когда я переключаю компонент и возвращаюсь к камере, предварительный просмотр остается черным, но отображается текст «IS FOCUS», поэтому this.props.isFocused имеет значение true.
Поэтому проблема связана с самой камерой. Но я не понимаю.
Есть идеи, откуда возникла проблема?