LeCodesdocs

CameraView

Камера устройства — живой предпросмотр плюс съёмка фото — как Presentable: открой её на весь экран, сделай Router.push или встрой среди детей экрана как узел живого предпросмотра. takePhoto() возвращает File (хэндл буфера хоста), поэтому снимок можно сразу отправить в текстуру (Texture2D.load(file)), на загрузку (FormData) или в шторку шеринга (share(file)). Опционален по хосту — проверяй через CameraView.isSupported.

Обзор

TypeScript
const camera = CameraView()               // задняя камера по умолчанию
await camera.open()                       // спрашивает разрешение, показывает предпросмотр
const photo = await camera.takePhoto()
camera.close()

share(photo, 'My shot')

API

TypeScript
CameraView.isSupported: boolean                         // статик — есть ли у этого хоста камера?

CameraView(options?: { facingMode?: 'front' | 'back' }) // по умолчанию 'back'
camera.open(opts?: { transition }): Promise<void>       // запросить разрешение, показать предпросмотр
camera.setFacingMode(mode: 'front' | 'back'): Promise<void>   // переключить, пока предпросмотр живой
camera.takePhoto(): Promise<File>                       // фото, закодированное хостом
camera.close(): void                                    // закрыть, освободить камеру
  • open() следует контракту «подготовить, затем показать» (как ARScene / QRScanner): текущий пункт назначения остаётся видимым, пока запрашивается разрешение на камеру; переключение — и transition, если ты его передал — происходит, когда камера готова. Промис отклоняется, если в разрешении отказано, у хоста нет камеры или его опередила другая навигация — обработай это.
  • Камера — полноценный NativeView поверх зарегистрированного хостом вью "camera": Router.push(camera) работает, и она встраивается как узел лэйаута — живой видоискатель внутри твоего экрана, размером по своим стилям. isSupported — ровно «зарегистрировал ли этот хост это вью».
  • Каждый CameraView() — отдельный экземпляр, но камера устройства — одна сессия: не держи открытыми две сразу.
Note

жизненный цикл — камера остаётся занятой до close(). Всегда закрывай при уходе с экрана (onClose), иначе камера (и её системный индикатор) останется включённой.

Смотрите также

  • QRScanner — сканирующая разновидность камеры.
  • Файлы и шерингshare() снятого фото; openFilePicker как не-камерный способ получить изображение.
  • Сеть — хэндл File и загрузка через FormData.