Introdução

Trabalhar com a câmera, digitalização QR e reconhecimento de texto é um problema complexo para os aplicativos React Native. É uma tonelada de trabalho que requer a manipulação de uma câmera em desenvolvimento nativo. Se você tiver problemas com o desenvolvimento de plataforma cruzada para dispositivos móveis no React Native ao trabalhar com a câmera, o React Native Camera é exatamente o que você precisa.

Hoje estou de volta para falar sobre como podemos lidar facilmente com a utilização de uma câmera de telefone com o React Native. Deixe-me apresentá-lo ao React Native Camera.

Neste artigo, demonstrarei o React Native Camera desenvolvendo um aplicativo leitor de código QR. O aplicativo nos permitirá ler um código QR em tempo real e exibir seu conteúdo na tela por meio do aplicativo.

O que é React Native Camera?

React Native Camera é uma câmera abrangente componente no React Native. Dá a você o controle da câmera e se comunica com o sistema operacional nativo e o hardware do dispositivo.

O React Native Camera suporta o seguinte:

  • Fotografias
  • vídeos
  • Detecção de rosto
  • Leitura de código de barras
  • Reconhecimento de texto

É um projeto totalmente de código aberto e solicitações pull são sempre bem-vindas. Ele também vem com uma ótima documentação .

Tem 9,2 mil estrelas no GitHub e 175 mil downloads de usuários por mês em npm .

React Native Camera é baseado em módulo expo-camera . Portanto, podemos usar React Native Camera com Expo.

Você pode instalar o expo-camera executando o seguinte comando:

 expo instalar expo-camera

Também funciona com detecção de rosto, leitura de código de barras e captura de fotos. Você só precisa importar a Camera da expo-camera :

 importar {Camera} de'expo-camera';

Construindo um scanner QR com React Native Camera

Agora, para entender o React Native Camera corretamente, vamos criar um projeto simples do React Native com um scanner QR. Vou usar um dispositivo iOS para construir e testar.

Configurando o projeto

Antes de começarmos, preciso criar um novo projeto React Native com as seguintes linhas de código:

init

 react-nativo react_native_scanner
cd react_native_scanner
npm run ios

Incrível, criamos com sucesso nosso aplicativo React Native.

Em seguida, devemos instalar o pacote React Native Camera para nosso projeto. Vamos instalar com os seguintes comandos:

 npm install react-native-camera--save
cd ios && pod install && cd..

A seguir, precisamos adicionar permissões iOS ao nosso aplicativo Info.plist :

  NSCameraUsageDescription 
 Sua mensagem para o usuário quando a câmera for acessada pela primeira vez   NSPhotoLibraryAddUsageDescription 
 Sua mensagem para o usuário quando a biblioteca de fotos for acessada pela primeira vez   NSPhotoLibraryUsageDescription 
 Sua mensagem para o usuário quando a biblioteca de fotos for acessada pela primeira vez   NSMicrophoneUsageDescription 
 Sua mensagem para o usuário quando o microfone for acessado pela primeira vez 

Agora, devemos inserir as seguintes linhas de código dentro de nosso arquivo android/app/src/main/AndroidManifest.xml :

  
 

Por último, mas não menos importante, devemos alterar o arquivo android/app/build.gradle :

 android { ... defaultConfig { ... missingDimensionStrategy'react-native-camera','general'//<---inserir esta linha }
}

Depois disso, se executarmos o aplicativo e tudo estiver bem, estamos prontos para codificar!

Definição do estilo do aplicativo

Vamos mudar nosso arquivo App.js adicionando as seguintes importações:

 import React, {useState} de'react';
import {StyleSheet, Text, View, TouchableOpacity, SafeAreaView} de'react-native';
importar {RNCamera} de'react-native-camera'

Vamos importar e usar o componente RNCamera para nos comunicarmos com a câmera. Se estiver interessado, você pode ler mais sobre RNCamera aqui .

A seguir, modificaremos nossa tela principal. Vamos remover o código gerado anteriormente para adicionar um topBar com SafeAreaView e um título com View e Text .

Em seguida, adicionarei RNCamera conforme mencionado acima para se comunicar com a câmera e um botão TouchableOpacity para permitir que o usuário leia um código QR:

     React Native Scanner      Bem-vindo ao tutorial React-Native-Camera       Novo QR Scan   

Vamos atualizar o estilo de nossa topBar para torná-la verde e o texto do título para torná-la preta:

 const styles=StyleSheet.create ({ Barra superior: { altura: 50, backgroundColor:'# 62d1bc',//verde alignItems:'center', justifyContent:'center', }, topBarTitleText: { cor:'#ffffff',//branco fontSize: 20, }, legenda: { altura: 120, justifyContent:'center', alignItems:'center', }, captionTitleText: { cor:'# 121B0D',//preto fontSize: 16, fontWeight:'600' },
});

Vou usar useState para armazenar o código QR do React Native Camera. Vamos adicionar a seguinte linha ao nosso App.js com estado inicial null :

 função App () { const [código de barras, setBarcode]=useState (nulo); ...
}

Vamos armazenar o código QR simplesmente chamando setBarcode e exibi-lo com barcode .

Além disso, adicionei RNCamera com um estilo semelhante. Isso ocorre para que não ocupe muito espaço na tela e possamos ver o resto do aplicativo:

 const styles=StyleSheet.create ({ ... rnCamera: { flex: 1, largura:'94%', alignSelf:'center', }
})

Se quiser verificar todas as opções de estilo, você pode verificar a folha de estilo em GitHub aqui .

Agora, se você executar o aplicativo, nossa IU se parecerá com a foto abaixo:

Captura de tela de Aplicativo de scanner React Native sem funcionalidade de leitura QR

Lendo um código QR

Se você tentar ler um código QR, ainda não conseguirá lê-lo. Portanto, usarei método onBarCodeRead para recuperar informações do código de barras quando a câmera detecta um código QR.

Esta função retorna várias propriedades, incluindo:

  • data , uma apresentação de texto do código QR
  • rawData , os dados codificados no código QR
  • uri , o caminho para a imagem salva no cache do seu aplicativo (somente iOS)
  • type , o tipo de código QR (qr, aztec, code93, etc.)
  • bounds , o tamanho da imagem e os dados de origem (x e y)

Captura de tela de Aplicativo React Native Scanner digitalizando o código QR

Vamos atualizar nosso arquivo App.js para exibir as informações lidas do código QR:

 função App () { const [código de barras, setBarcode]=useState (nulo); Retorna (     React Native Scanner      Bem-vindo ao tutorial React-Native-Camera   {código de barras? (   {barcode.data}   {barcode.type}   ): (  )}   setBarcode (null)}>  Novo QR Scan     );
};

Acima, extraímos informações do código QR usando a função onBarCodeRead e salvamos no estado React chamando o método setBarcode .

Em seguida, exibimos os dados e o tipo do código de barras, se o código de barras não for null . Se quiser digitalizar novamente, você pode pressionar o botão Novo QR Scan e os dados do estado serão definidos como null .

E é isso! Este é o aplicativo final:

Captura de tela de aplicativo de scanner nativo de reação final

Se quiser ver todo o código, você pode verificar o Repo do Github aqui.

Conclusão

React Native Camera é um pacote incrível para ajudar os desenvolvedores a usar a câmera do dispositivo para aplicativos iOS e Android desenvolvidos com React Native. Além do nosso scanner de código QR de exemplo, você também pode fazer reconhecimento de texto, detecção de rosto e capturar vídeo e imagens.

Obrigado por ler. Espero que você tenha achado esta peça útil. Boa programação!

A postagem Intro to React Native Camera apareceu primeiro em LogRocket Blog .