Как открыть камеру React Native Expo при нажатии кнопки - PullRequest
0 голосов
/ 08 июня 2018

Вот код для камеры.Я хочу кнопку, чтобы открыть камеру.Я не хочу, чтобы он автоматически открывался при запуске приложения.Также есть ли способ обнаружить текст на изображении и сохранить его?

import React from 'react';
import { Text, View, TouchableOpacity } from 'react-native';
import { Camera, Permissions } from 'expo';

export default class CameraExample extends React.Component {
  state = {
    hasCameraPermission: null,
    type: Camera.Constants.Type.back,
  };

  async componentWillMount() {
    const { status } = await Permissions.askAsync(Permissions.CAMERA);
    this.setState({ hasCameraPermission: status === 'granted' });
  }

  render() {
    const { hasCameraPermission } = this.state;
    if (hasCameraPermission === null) {
      return <View />;
    } else if (hasCameraPermission === false) {
      return <Text>No access to camera</Text>;
    } else {
      return (
        <View style={{ flex: 1 }}>
          <Camera style={{ flex: 1 }} type={this.state.type}>
            <View
              style={{
                flex: 1,
                backgroundColor: 'transparent',
                flexDirection: 'row',
              }}>
              <TouchableOpacity
                style={{
                  flex: 0.1,
                  alignSelf: 'flex-end',
                  alignItems: 'center',
                }}
                onPress={() => {
                  this.setState({
                    type: this.state.type === Camera.Constants.Type.back
                      ? Camera.Constants.Type.front
                      : Camera.Constants.Type.back,
                  });
                }}>
                <Text
                  style={{ fontSize: 18, marginBottom: 10, color: 'white' }}>
                  {' '}Flip{' '}
                </Text>
              </TouchableOpacity>
            </View>
          </Camera>
        </View>
      );
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Вы можете просто подключить кнопку и перейти к камере при нажатии.Это очень стандартный способ навигации как реагировать, так и реагировать на нативный. Так что просто используйте любую библиотеку навигации, которую вы используете, и используйте навигационные реквизиты для перенаправления на камеру onPress ().

0 голосов
/ 19 октября 2018

Вы можете поместить свое представление в переменную и отобразить ее нажатием кнопки.В моей камере я сделал это для предварительного просмотра изображения, когда фотография сделана:

if (BUTTON PRESS CONDITION) {
  imageView = (
    <View style={styles.previewContainer}>
      <Image style={styles.imagePreview} source={{uri: `data:image/gif;base64,${base64Post}`}} />

      <View style={styles.container}>
          <TouchableOpacity style={styles.sendButton} onPress={() => Alert.alert("Not implemented!")}>
            <Image style={{width: 70, height: 70}} source={require('../assets/Send.png')}/>
          </TouchableOpacity>                
      </View>

      <View style={styles.container} key={this.state.uniqueValue}>
          <TouchableOpacity style={styles.undoButton} onPress={() => this.setState({ persist64: null})}>
            <Image style={{width: 70, height: 70}} source={require('../assets/undoButton.png')}/>
          </TouchableOpacity>                
      </View>                                          
    </View>
    )           
}    

Вы можете установить некоторое логическое значение, при котором при нажатии кнопки значение true отображает вид вашей камеры.Затем возьмите имя созданного вами представления и поместите его где-нибудь в свой рендер.например, так:

{imageView}

Если вам нужны дальнейшие объяснения, дайте мне знать.

В качестве альтернативы вы можете просто создать отдельную страницу для вашей камеры и иметь кнопку для перехода на страницу камеры.

...