Для роботи в телефоні з камерою використовують додатково такі пакети:
expo-camera - надає методи роботи з камерою
expo-media-library - надає методи для збереження фото в пам'ять телефону
Встановлюємо пакети:
terminal
npx expo install expo-camera
terminal
npx expo install expo-media-library
Підключаємо бібліотеки для роботи з камерою і медіатекою.
import { Camera } from "expo-camera";
import * as MediaLibrary from "expo-media-library";
Для коректної роботи камери та запису на телефон, потрібно отримати дозвіл від користувача. У камери є метод - Camera.requestCameraPermissionsAsync(), а у медіа-бібліотеці - MediaLibrary.requestPermissionsAsync().
Спочатку визначимо стейт в якому зберігатимемо значення чи має програма доступ до камери. Дефолтне значення null.
Якщо ми хочемо відображення камери на весь екран, то кладемо його в компонент View (container) і також розтягаємо на весь екран. А додатковий функціонал можна розмістити всередині компоненту Camera.
Якщо ми хочемо відображення камери розмістити не на весь екран, а обмежити в рамках компоненту View, то огортаємо камеру цим компонентом і стилями задаємо розміри.
Щоб зробити знімок - потрібно отримати посилання на камеру, використовуючи ref, і вже у цього об'єкта викликати метод takePictureAsync(). Результатом його роботи буде об'єкт з ключем uri, де буде зберігатися посилання на фото.
Передаємо це посилання методу MediaLibrary.createAssetAsync(uri) і фото збережеться в пам'ять телефону.