1 00:00:02,100 --> 00:00:07,110 Agora, este aplicativo React Native é construído com a ajuda da expo como você sabe. Agora, como mencionei no início do 2 00:00:07,110 --> 00:00:12,690 curso, esse ainda é um aplicativo React Native regular, portanto, expo como um 3 00:00:12,690 --> 00:00:19,170 invólucro extra que fornece muitos recursos de conveniência prontos para uso que facilitam a criação desse 4 00:00:19,170 --> 00:00:20,820 aplicativo e é 5 00:00:20,820 --> 00:00:27,770 como um shell, um aplicativo no qual nosso aplicativo é executado, o que facilita a utilização de 6 00:00:27,780 --> 00:00:31,860 muitas funcionalidades nativas do dispositivo e, especialmente, a instalação. 7 00:00:31,860 --> 00:00:37,380 Agora, como também mencionei no início deste módulo, em um módulo separado, mostrarei como você pode adicionar recursos de 8 00:00:37,380 --> 00:00:40,590 dispositivos nativos a aplicativos que não são da expo, mas, na 9 00:00:40,890 --> 00:00:46,170 verdade, se você não tiver um motivo para não usar a expo, eu é altamente recomendável que você o 10 00:00:46,170 --> 00:00:53,400 use porque o expo, se você verificar os documentos deles, tiver muitos recursos internos e muitos módulos nativos internos que você pode usar, portanto, os 11 00:00:53,400 --> 00:00:54,570 recursos nativos do 12 00:00:54,570 --> 00:00:56,460 dispositivo podem ser adicionados facilmente e 13 00:00:57,090 --> 00:01:01,620 você vê uma lista completa aqui, indo para os documentos e para a referência da API. 14 00:01:01,620 --> 00:01:07,650 Aqui, você vê várias coisas que pode adicionar ao seu aplicativo e essas são principalmente 15 00:01:08,070 --> 00:01:11,220 funcionalidades nativas do dispositivo, todas fornecidas pela expo, 16 00:01:11,340 --> 00:01:16,770 assim você ainda precisará instalar algo, mas não precisará fazer nenhum manual. configuração e, 17 00:01:16,770 --> 00:01:23,700 como você verá na criação de um aplicativo sem módulo expo, há algumas configurações que você precisa fazer 18 00:01:23,790 --> 00:01:30,270 se estiver adicionando módulos nativos, pacotes de recursos de dispositivos nativos a um aplicativo não expo, portanto, 19 00:01:30,270 --> 00:01:32,560 isso é realmente interessante aqui. 20 00:01:32,650 --> 00:01:38,360 Agora eu quero usar uma câmera e, de fato, há um pacote de câmera que você pode adicionar. 21 00:01:38,610 --> 00:01:42,510 Na verdade, poderíamos usar isso para acessar a câmera do dispositivo, 22 00:01:42,510 --> 00:01:43,620 isso é perfeito 23 00:01:43,620 --> 00:01:49,620 se você precisar criar um aplicativo que realmente tenha muito a ver com a câmera, se você estiver 24 00:01:49,620 --> 00:01:55,440 criando como o Instagram, como um aplicativo em que realmente deseja controlar o tela inteira da câmera 25 00:01:55,440 --> 00:02:00,760 e todo o fluxo da câmera, na verdade não é o que eu quero fazer aqui. 26 00:02:00,780 --> 00:02:02,960 Quero usar a câmera comum do dispositivo, não 27 00:02:02,970 --> 00:02:04,660 preciso de nada de especial 28 00:02:04,740 --> 00:02:08,150 por lá, apenas me preocupo em obter uma imagem que o usuário possa 29 00:02:08,230 --> 00:02:13,620 tirar e, por isso, realmente obtemos o seletor de imagens. Isso também nos permite usar a câmera do dispositivo, 30 00:02:13,620 --> 00:02:16,200 mas não nos permite personalizar muito a câmera, mas 31 00:02:16,200 --> 00:02:18,450 é exatamente isso que eu preciso aqui. 32 00:02:18,450 --> 00:02:25,050 Agora, tudo o que precisamos fazer para obtê-lo é executar este comando expo install, que, a propósito, é como 33 00:02:25,170 --> 00:02:30,750 npm install, apenas para garantir que ele instale uma versão do pacote que funcione com a 34 00:02:30,750 --> 00:02:38,070 nossa versão específica do expo que estamos usando neste aplicativo. Então, copiarei este comando e, neste projeto, 35 00:02:38,090 --> 00:02:45,530 podemos executar o expo install expo image picker. Aperte enter e agora instalará este pacote com o npm 36 00:02:45,530 --> 00:02:49,580 install nos bastidores, é o que ele faz aqui, apenas em 37 00:02:49,610 --> 00:02:55,880 uma versão que se encaixa no nosso SDK expo onde estamos usando este projeto e que agora 38 00:02:55,880 --> 00:02:58,190 o instala e é isso, nenhuma 39 00:02:58,190 --> 00:03:00,410 configuração extra é necessária. 40 00:03:00,410 --> 00:03:02,800 Não precisamos tocar em nenhum arquivo de 41 00:03:02,810 --> 00:03:04,570 configuração, não precisamos fazer mais 42 00:03:04,640 --> 00:03:07,970 nada, isso garante que possamos usar essa funcionalidade e, claro, 43 00:03:07,970 --> 00:03:09,690 isso é muito fácil. 44 00:03:09,770 --> 00:03:15,280 Com isso, podemos começar a usá-lo e eu quero começar a usá-lo aqui na nova tela do local 45 00:03:15,350 --> 00:03:17,270 onde temos a entrada de 46 00:03:17,270 --> 00:03:22,480 texto correta; também quero agora adicionar um botão que o usuário possa pressionar para abrir a câmera. 47 00:03:22,490 --> 00:03:27,680 Agora, é claro, para todos esses recursos nativos de dispositivos e também para os muitos recursos que, obviamente, 48 00:03:27,680 --> 00:03:32,660 não podemos abordar neste curso, você sempre aprendeu como usá-los aqui em seus documentos oficiais da exposição, 49 00:03:32,660 --> 00:03:38,260 onde aprendeu quais métodos e propriedades você pode acessar lá, você encontra alguns exemplos curtos para muitos pacotes, então 50 00:03:38,300 --> 00:03:43,220 é definitivamente algo que você deve conferir. Para a câmera, é claro que você 51 00:03:43,220 --> 00:03:46,920 também pode acompanhar, porque vamos usá-la juntos aqui para tirar uma foto. 52 00:03:46,970 --> 00:03:54,830 Na verdade, vou criar um novo componente, ImageSelector. js, você pode nomear o que quiser, no 53 00:03:54,830 --> 00:04:05,810 qual importo o React do React e onde importo uma visualização e um botão e também um texto do React Native e também a 54 00:04:06,290 --> 00:04:11,710 folha de estilo, é claro, porque quero estilizar meu seletor de imagens. 55 00:04:11,870 --> 00:04:16,130 Vamos chamá-lo de seletor de imagens, eu gosto disso, meu componente de seletor de imagens. 56 00:04:16,790 --> 00:04:23,570 Então, aqui, o seletor de imagens é um componente comum, é claro, onde eu quero 57 00:04:23,580 --> 00:04:31,290 configurar alguns estilos com a Folha de estilo. crie o método e onde, no final, exporto o componente selecionador de imagens. 58 00:04:31,310 --> 00:04:37,510 Agora, o que vai acontecer aqui no componente selecionador de imagens? No final, aqui retornarei uma visão 59 00:04:37,780 --> 00:04:44,750 que deve conter outra visão em que eu possa exibir uma visualização da imagem. 60 00:04:44,770 --> 00:04:50,500 Portanto, quero ter o componente de texto onde digo que nenhuma imagem foi escolhida ainda, que é o meu 61 00:04:50,530 --> 00:04:52,840 conteúdo de fallback, se nenhuma imagem foi 62 00:04:52,930 --> 00:04:54,920 escolhida ainda; caso contrário, exibirei uma 63 00:04:54,940 --> 00:04:59,700 imagem, também precisaremos importar o componente de imagem de Reagir nativo e, abaixo dessa visualização, 64 00:04:59,710 --> 00:05:09,180 adicionarei um botão com um título de imagem onde quero definir a cor como Cores. primário, portanto, para isso, certifique-se 65 00:05:09,190 --> 00:05:17,410 de importar essas cores constantemente e, depois de pressionar, desejo abrir 66 00:05:17,500 --> 00:05:27,530 a câmera e exibi-la ao usuário. Então, eu também adicionarei uma constante aqui, pegue o manipulador de imagens e essa é uma 67 00:05:27,530 --> 00:05:29,480 função que deve abrir a 68 00:05:29,480 --> 00:05:33,140 câmera e essa é a função que ligarei a este botão. 69 00:05:33,170 --> 00:05:42,470 Agora, algum estilo seria bom. Nessa visão externa, adicionarei um estilo de selecionador de imagens; nessa 70 00:05:42,800 --> 00:05:45,860 visualização interna, que exibe uma visualização 71 00:05:45,860 --> 00:05:55,020 da minha imagem, adicionarei um estilo de visualização da imagem. Então este texto aqui também pode ser estilizado, mas na verdade não preciso 72 00:05:55,020 --> 00:06:02,910 de um estilo especial e, é claro, também quero exibir uma imagem aqui. Em breve, adicionarei uma condição if / else para exibir 73 00:06:02,910 --> 00:06:05,120 apenas o texto ou a 74 00:06:05,270 --> 00:06:09,030 imagem e isso também deve ter algum estilo, talvez apenas imagem. 75 00:06:09,030 --> 00:06:13,620 Portanto, agora temos três identificadores de estilo que precisamos adicionar à folha 76 00:06:13,890 --> 00:06:17,440 de estilo, obtemos o seletor de imagens para 77 00:06:17,610 --> 00:06:22,440 o componente geral, obtemos a visualização da imagem e obtivemos a própria imagem. 78 00:06:22,440 --> 00:06:28,560 A imagem em si é simples, só quero definir uma largura de 100% e uma altura de 100%, para que 79 00:06:28,560 --> 00:06:32,670 ela ocupe toda a largura e altura do contêiner de visualização ao redor. 80 00:06:32,670 --> 00:06:36,750 É claro que esse contêiner pode ser configurado da maneira que você quiser, darei 81 00:06:36,870 --> 00:06:41,550 uma largura de 100% e uma altura de 200 pixels, mas é claro que você pode 82 00:06:41,550 --> 00:06:47,880 alterar isso ou calculá-lo dinamicamente com a API de dimensões. Adicione uma margem na parte inferior de 83 00:06:47,880 --> 00:06:55,400 10 e verifique se o texto do espaço reservado seria realmente centralizado, adicionando o centro 84 00:06:55,400 --> 00:06:59,470 de conteúdo justificado e alinhe os itens aqui 85 00:06:59,730 --> 00:07:08,460 e, além disso, também adicionarei uma borda aqui com a cor cinza claro e a largura da borda 86 00:07:08,460 --> 00:07:09,500 1. 87 00:07:09,720 --> 00:07:15,270 Agora, para o componente selecionador de imagens, em geral, vou definir isso para alinhar o centro dos 88 00:07:15,270 --> 00:07:19,020 itens para garantir que todos os itens sejam centralizados horizontalmente, mas 89 00:07:19,080 --> 00:07:22,910 agora estamos todos aqui para realmente abrir a câmera do dispositivo, certo? 90 00:07:23,010 --> 00:07:28,680 Portanto, antes de fazer qualquer outra coisa aqui em relação à visualização e assim 91 00:07:28,700 --> 00:07:40,720 por diante, vamos ter certeza de que aqui no manipulador de imagens take, realmente abrimos a câmera e, para isso, vamos importar tudo como seletor de imagens do seletor de 92 00:07:41,500 --> 00:07:48,460 imagens expo. pacote que você acabou de instalar. Agora, como usei o seletor de imagens aqui e 93 00:07:48,490 --> 00:07:54,360 também para o componente, teremos um conflito de nomes, então vou nomear esse seletor de img 94 00:07:54,390 --> 00:07:59,860 aqui apenas para evitar esse conflito de nomes que, caso contrário, causaria problemas, também 95 00:07:59,920 --> 00:08:02,910 o altere aqui na exportação de curso. 96 00:08:02,920 --> 00:08:06,610 Portanto, agora com o seletor de imagens importado aqui, podemos usá-lo aqui, 97 00:08:06,610 --> 00:08:07,700 seletor de imagens 98 00:08:07,840 --> 00:08:10,930 e lá podemos chamar o lançamento de câmera assíncrona. 99 00:08:10,960 --> 00:08:13,810 Você também pode abrir a galeria, 100 00:08:13,810 --> 00:08:18,000 se quiser, mas aqui, chamarei iniciar a câmera como assíncrona. 101 00:08:18,140 --> 00:08:25,070 Agora, isso abrirá a câmera do dispositivo e a parte assíncrona aqui meio que implica que esta é uma 102 00:08:25,070 --> 00:08:26,120 operação assíncrona. 103 00:08:26,120 --> 00:08:31,550 De fato, isso retorna uma promessa, que faz sentido, porque abre a câmera e não sabemos 104 00:08:31,550 --> 00:08:33,740 quando o usuário terminará de tirar 105 00:08:33,740 --> 00:08:39,920 a imagem; portanto, apenas registrará uma função que deve executar assim que o usuário terminar e resolver a promessa 106 00:08:39,920 --> 00:08:44,930 de executar essa função uma vez que isso aconteça, uma vez que o usuário esteja 107 00:08:44,930 --> 00:08:51,400 pronto ou, é claro, assim que o usuário cancelar. Podemos lidar com tudo isso e com o resultado e assim por 108 00:08:51,400 --> 00:08:57,450 diante mais tarde, por enquanto, vamos ver se isso funciona e para isso, vamos incluir o componente selecionador de imagens na nova tela de local. 109 00:08:57,490 --> 00:09:03,670 Portanto, podemos importar o seletor de imagens e, é claro, podemos usar esse nome porque 110 00:09:03,670 --> 00:09:10,960 não estamos usando o pacote do seletor de imagens aqui, importá-lo dos componentes, do componente do seletor de imagens 111 00:09:10,990 --> 00:09:17,780 e adicionar esse seletor aqui abaixo da entrada de texto como um componente de fechamento automático como este. 112 00:09:17,800 --> 00:09:22,300 Agora, se salvarmos isso, vamos dar uma olhada. Aqui, esse texto e assim 113 00:09:22,320 --> 00:09:27,720 por diante, não está posicionado corretamente, não precisamos nos preocupar com isso no momento, 114 00:09:27,720 --> 00:09:35,930 vamos pressionar tirar uma imagem e o que você verá é que nada acontece, mas recebo um aviso - câmera 115 00:09:35,960 --> 00:09:45,360 ausente ou permissão do rolo da câmera. No Android, se eu tentar, será perguntado se quero conceder permissões. Eu preciso pressionar Allow aqui e com 116 00:09:45,360 --> 00:09:51,240 isso, a câmera se abre. Então, isso é bom, geralmente funciona, eu posso 117 00:09:51,240 --> 00:09:52,450 usá-lo, posso 118 00:09:52,470 --> 00:09:56,790 pressionar esse botão e confirmar a imagem que tirei, mas no iOS 119 00:09:57,090 --> 00:10:04,440 não funciona e por que é esse o caso? Bem no iOS, recebemos um erro de permissão aqui e 120 00:10:04,480 --> 00:10:05,260 isso simplesmente 121 00:10:05,320 --> 00:10:10,810 acontece porque as permissões são importantes, mas funcionam de maneira diferente no iOS e no Android. 122 00:10:11,500 --> 00:10:12,100 No 123 00:10:12,100 --> 00:10:18,600 Android, você também configurará as permissões antecipadamente e, como estamos usando esse aplicativo expo, em que o expo fornece esse wrapper, 124 00:10:18,600 --> 00:10:26,440 o expo realmente faz todas essas permissões configuradas e solicitadas para nós. Para iOS, o sistema de permissão funciona de maneira 125 00:10:26,440 --> 00:10:28,310 um pouco diferente. 126 00:10:28,360 --> 00:10:34,390 Você realmente não o configura de forma que tenha um arquivo de configuração onde define todas as permissões com antecedência e 127 00:10:34,390 --> 00:10:34,900 é 128 00:10:34,900 --> 00:10:38,540 isso, em vez disso, é necessário pedir permissão em tempo de execução. 129 00:10:38,590 --> 00:10:43,040 Nota lateral, a propósito, em algumas versões do Android, agora você também deve fazer isso. 130 00:10:43,210 --> 00:10:49,600 Ainda existe a exposição que você vê, então para o Android funciona mais ou menos assim, no iOS não, 131 00:10:49,600 --> 00:10:56,050 você precisa pedir ao usuário uma permissão para acessar a câmera e isso é simplesmente algo que precisamos fazer 132 00:10:56,050 --> 00:10:59,890 aqui e podemos fazer isso com a ajuda de outro pacote expo 133 00:10:59,890 --> 00:11:02,680 e esse é o pacote de permissões. 134 00:11:02,710 --> 00:11:08,890 Você também precisa instalá-lo com este comando aqui em seu projeto para poder solicitar 135 00:11:08,890 --> 00:11:10,230 permissões ao usuário. 136 00:11:10,420 --> 00:11:12,640 Então, vamos fazer isso aqui no 137 00:11:12,640 --> 00:11:19,570 projeto, vamos executar as permissões expo install expo, que novamente são apenas este wrapper em torno da instalação do npm para instalar 138 00:11:19,570 --> 00:11:26,050 as permissões para este projeto ou para instalar este pacote para esse projeto e, em seguida, no seletor de imagens 139 00:11:26,050 --> 00:11:33,580 antes de tentar iniciar o e abrindo a câmera, precisaremos solicitar permissões. Para isso, na verdade, adicionarei uma 140 00:11:33,580 --> 00:11:41,260 nova constante aqui, obter ou verificar permissões e essa é uma função que 141 00:11:41,430 --> 00:11:47,310 contém uma função que usará este pacote de permissões recém-adicionado. 142 00:11:47,310 --> 00:11:52,050 Então, aqui eu importo tudo como permissões das permissões expo, para que o mesmo 143 00:11:52,050 --> 00:11:55,280 tipo de importação que o temos para o 144 00:11:55,590 --> 00:12:00,420 seletor de imagens e, em seguida, possamos usar permissões e perguntar de forma assíncrona. 145 00:12:00,420 --> 00:12:06,270 Novamente, essa é uma tarefa assíncrona que retorna uma promessa, porque isso abrirá um prompt e, antes 146 00:12:06,270 --> 00:12:08,810 que o usuário escolha uma resposta, 147 00:12:08,820 --> 00:12:14,760 nada acontecerá; portanto, temos uma promessa que resolve ou é rejeitada quando o usuário confirma ou recusa. 148 00:12:16,560 --> 00:12:20,090 Portanto, aqui precisamos ser mais específicos sobre qual permissão precisamos, 149 00:12:20,100 --> 00:12:27,270 portanto, passamos algo para perguntar assíncrono e essa é uma constante que obtemos do objeto de permissões que estamos importando aqui. 150 00:12:27,660 --> 00:12:33,630 Portanto, com a notação de ponto aqui, podemos acessar diferentes tipos de permissões e aqui todos esses nomes 151 00:12:33,690 --> 00:12:36,660 em maiúsculas são as diferentes permissões que você 152 00:12:36,660 --> 00:12:41,660 pode solicitar e aqui precisamos da permissão da câmera porque queremos acessar a câmera. 153 00:12:41,710 --> 00:12:46,340 Se você quisesse acessar a galeria, essa seria a permissão do rolo da câmera. 154 00:12:47,850 --> 00:12:49,850 Agora eu vou para a câmera 155 00:12:50,700 --> 00:12:54,390 aqui e, como eu disse, isso retorna uma promessa, eu quero usar 156 00:12:54,420 --> 00:13:00,410 o async aguardar aqui, portanto, posso adicionar o assíncrono aqui na frente da função e, em seguida, aguardar 157 00:13:00,440 --> 00:13:01,500 isso e 158 00:13:01,500 --> 00:13:06,470 obter o resultado e armazená-lo em uma constante , a alternativa a isso seria usar 159 00:13:06,780 --> 00:13:14,010 então e pegar isso e agora podemos verificar se o resultado. status não é igual a concedido, o que significa que o 160 00:13:14,010 --> 00:13:16,210 usuário recusou, o usuário não 161 00:13:16,290 --> 00:13:18,770 concedeu permissões; nesse caso, não podemos continuar. 162 00:13:18,780 --> 00:13:25,590 Então, aqui, na verdade, lançarei um alerta, então importe o 163 00:13:25,590 --> 00:13:40,420 alerta do React Native e jogue um alerta onde digo alerta. alerta, permissões insuficientes, você precisa conceder permissões ao aplicativo da câmera para usar este aplicativo ou qualquer saída 164 00:13:40,480 --> 00:13:42,890 que queira mostrar e, em 165 00:13:43,000 --> 00:13:49,690 seguida, adicionarei um botão aqui onde digo OK. Agora, o usuário precisará alterar as permissões nas configurações 166 00:13:49,690 --> 00:13:55,000 do sistema após recusá-las de qualquer maneira, portanto, não podemos solicitar permissões novamente aqui depois 167 00:13:55,000 --> 00:13:56,950 que elas foram recusadas. 168 00:13:56,950 --> 00:14:02,950 Então, aqui, eu quero retornar false porque é a função de verificação de permissões e quero retornar 169 00:14:02,950 --> 00:14:06,790 false se o usuário meio que não nos conceder permissões, 170 00:14:06,790 --> 00:14:10,080 eu retornarei true caso contrário, porque agora sabemos 171 00:14:10,090 --> 00:14:14,920 que temos permissões A propósito, se chamarmos isso funcionar várias vezes e o 172 00:14:14,920 --> 00:14:20,050 usuário já concedeu permissões no passado, o usuário não receberá este prompt novamente, da 173 00:14:20,050 --> 00:14:27,880 mesma forma que se o usuário recusou, em ambos os casos o resultado é armazenado automaticamente pelo iOS e essa função será 174 00:14:27,880 --> 00:14:33,400 apenas retorne verdadeiro ou falso, dependendo se o usuário negou ou concedeu acesso no passado. 175 00:14:33,400 --> 00:14:37,350 Portanto, verificar permissões agora é simplesmente uma função que precisamos chamar no 176 00:14:37,350 --> 00:14:40,590 manipulador de imagens antes de tentarmos usar a câmera. 177 00:14:40,780 --> 00:14:46,600 Então, aqui, eu também quero usar o Async Aguard, porque verificar as permissões, é claro, é 178 00:14:46,660 --> 00:14:47,600 uma função 179 00:14:47,770 --> 00:14:55,080 que retorna uma promessa, portanto, esperarei isso e armazenarei o resultado que armazenarei em uma constante nomeada com permissão, porque 180 00:14:56,100 --> 00:15:01,020 isso é verdadeiro ou falso dependendo se o usuário concedeu ou não permissões. 181 00:15:01,020 --> 00:15:05,580 Agora, se isso é falso, então, se não for verdade, retornarei aqui, não 182 00:15:05,580 --> 00:15:11,100 continuarei, não abrirei a câmera porque não poderei fazer isso de qualquer maneira, então não podemos continue, 183 00:15:11,100 --> 00:15:11,580 é 184 00:15:11,580 --> 00:15:12,360 isso mesmo. 185 00:15:13,500 --> 00:15:17,910 Caso contrário, podemos continuar e agora poderemos iniciar uma câmera no iOS também. 186 00:15:17,940 --> 00:15:18,810 Então, 187 00:15:18,810 --> 00:15:19,720 vamos tentar, vamos 188 00:15:19,830 --> 00:15:25,750 salvar isso e agora que isso mudou, desinstalarei o expo aqui para garantir que, em 189 00:15:25,750 --> 00:15:29,530 relação às permissões que concedi lá, volte ao estado inicial. 190 00:15:29,640 --> 00:15:33,860 Provavelmente, você não precisa fazer isso se nunca concedeu nenhuma permissão no 191 00:15:33,900 --> 00:15:39,810 seu aplicativo expo, mas se já brincou com permissões e pacotes nativos antes, deve desinstalar e reinstalar 192 00:15:39,810 --> 00:15:44,870 o aplicativo expo novamente executando o aplicativo no iOS pressionando i no console lá embaixo 193 00:15:44,890 --> 00:15:47,910 para garantir que todas essas permissões sejam redefinidas. 194 00:15:47,910 --> 00:15:53,220 Então, agora, se formos para a nova tela de reprodução e clicar em tirar foto, 195 00:15:53,490 --> 00:16:00,120 perguntam-me se quero conceder acesso à câmera e aqui posso clicar em OK e agora ainda temos esse erro. 196 00:16:01,490 --> 00:16:07,420 Agora, a única razão para isso é que, apesar de estarmos tentando acessar a câmera aqui, na verdade isso 197 00:16:07,420 --> 00:16:12,450 é apenas algo que sei para este pacote requer permissões para o rolo completo da câmera. 198 00:16:12,450 --> 00:16:16,020 Então, vamos mudar isso para pedir permissões para o rolo da 199 00:16:22,830 --> 00:16:25,880 câmera aqui e com isso, voltar e clicar em 200 00:16:25,880 --> 00:16:32,550 tirar imagem, agora estou perguntando se quero permitir o acesso às fotos e agora, se clicar em sim, deixo a câmera 201 00:16:32,560 --> 00:16:37,710 indisponível o simulador, que agora é um erro diferente e é bastante claro sobre o problema, 202 00:16:37,780 --> 00:16:43,510 o simulador iOS simplesmente não possui uma câmera. Então, continuarei no Android a partir de 203 00:16:43,510 --> 00:16:47,380 agora, mas é claro que você pode testar isso em 204 00:16:47,380 --> 00:16:54,250 um iPhone real para ver que lá também funciona. Se você escanear seu código de barras da expo com o 205 00:16:54,250 --> 00:16:56,000 aplicativo expo e executá-lo lá 206 00:16:56,050 --> 00:17:02,020 como o viu no início do curso, poderá tirar fotos com um telefone real e também demonstrarei o aplicativo finalizado 207 00:17:02,200 --> 00:17:05,750 no final deste módulo em dispositivos iOS e Android, em dispositivos reais. 208 00:17:05,890 --> 00:17:10,600 Então, por enquanto, vou me concentrar no Android e, claro, já conseguimos abrir isso. 209 00:17:10,690 --> 00:17:18,530 Mais uma vez me perguntam aqui, mas agora posso abrir e tirar uma foto. É claro que isso é legal, mas tirar uma foto assim não 210 00:17:18,530 --> 00:17:20,490 é tudo o que eu 211 00:17:20,570 --> 00:17:24,590 quero fazer, também quero configurar como eu a uso e quero usá-la.