Работа с камерой
Примеры использования функций камеры и интеграции.
Проект содержит примеры использования API, позволяющего работать с камерой: настройки, захват, обработка кадров.
Основная цель - показать не только, какие функции доступны для работы с камерой, но и как их правильно использовать.
Условия использования и участия
Исходный код проекта предоставляется по лицензии, которая позволяет использовать его в сторонних приложениях.
Соглашение участника (документ на английском) регламентирует права, предоставляемые участниками компании «Открытая Мобильная Платформа».
Информация об участниках указана в файле AUTHORS.
Кодекс поведения (документ на английском) — это действующий набор правил компании «Открытая Мобильная Платформа», который информирует об ожиданиях по взаимодействию между членами сообщества при общении и работе над проектами.
Структура проекта
Проект имеет стандартную структуру приложения на базе C++ и QML для ОС Аврора.
- Файл ru.auroraos.CameraUseCases.pro описывает структуру подпроектов для системы сборки qmake.
- Каталог icons содержит иконки приложения для поддерживаемых разрешений экрана.
- Каталог src содержит как основной исходный файл, так и C++-код пользовательских компонентов.
- Каталог qml содержит исходный код на QML и ресурсы интерфейса пользователя.
- Каталог components содержит пользовательские компоненты пользовательского интерфейса.
- Каталог cover содержит реализации обложек приложения.
- Каталог icons содержит дополнительные иконки интерфейса пользователя.
- Каталог pages содержит страницы приложения.
- Файл CameraUseCases.qml предоставляет реализацию окна приложения.
- Вспомогательные компоненты JavaScript находятся в каталоге qml/js.
- Каждый вариант использования имеет свой собственный QML-файл в каталоге qml/pages.
- Навигация по примерам в приложении реализована в файле MainPage.qml.
Совместимость
Проект совместим с актуальными версиями ОС Аврора.
Сборка проекта
Проект собирается обычным образом с помощью Аврора SDK.
Примеры
Информация о камерах
В этом примере показано, как получить список доступных камер и основную информацию о каждой камере.
- CameraInfoPage.qml это страница-пример.
- camerainfomodel.h и camerainfomodel.cpp
реализуют модель, которая предоставляет список доступных камер.
Каждый элемент модели обладает свойствами:
description
это удобочитаемое описание камеры;deviceName
это уникальный ID для идентификации камеры, который может быть недоступен для чтения человеком;isDefault
являетсяtrue
если используется стандартная камера,false
в противном случае;isNull
являетсяtrue
если информация о камере недействительна,false
в противном случае;orientation
представляет собой угол ориентации (по часовой стрелке, с шагом 90 градусов) датчика камеры по отношению к дисплею в его естественной ориентации;position
это физическое положение камеры в аппаратной системе (тыльная, лицевая или не указана).
Свойства камеры
В этом примере демонстрируются некоторые методы чтения и анализа свойств камеры с помощью C++.
- CameraPropertiesPage.qml это страница-пример. Она отображает состояние доступных свойств выбранной камеры, а также позволяет активировать и деактивировать камеру с помощью выпадающего меню.
- ConditionItem.qml
реализует базовый вид для состояния свойств:
Theme.presenceColor(Theme.PresenceAvailable)
используется для допустимых значений свойств;Theme.presenceColor(Theme.PresenceBusy)
используется для недопустимых значений свойств;Theme.presenceColor(Theme.PresenceOffline)
используется для свойств с неизвестным состоянием.
- extendedcamera.h и
extendedcamera.cpp реализуют расширение
QCamera
чтобы предоставить больше свойств для QML: режим съемки, настройки видоискателя, экспозиции, фокусировки, обработки изображений и диктофона. Он использует дополнительные классы для экспорта некоторых типов данных для QML:- extendedframeraterange.h и
extendedframeraterange.cpp
реализует расширение
QCamera::FrameRateRange
; - extendedviewfindersettings.h и
extendedviewfindersettings.cpp
реализует расширение
QCameraViewfinderSettings
.
- extendedframeraterange.h и
extendedframeraterange.cpp
реализует расширение
- cameraprovider.h и cameraprovider.cpp реализует поставщика камеры по имени устройства.
Декларативная камера
В этом примере демонстрируется, как захватывать изображения и записывать видео, а также как изменять камеру, а также некоторые другие настройки камеры.
- DeclarativeCameraPage.qml реализует Qml Camera с помощью которой вы можете сделать снимок или записать видео с основной или фронтальной камеры. Метаданные также заполняются в их
- CameraSettingsView.qml реализует изменение
некоторых настроек камеры:
- какая Камера используется
- режим захвата
- разрешение фотографии
- CameraImageSettingsView.qml реализует
изменение некоторых настроек камеры, влияющих на изображение:
- режим экспозиции
- режим баланса белого Он использует дополнительные классы для экспорта некоторых типов данных для QML:
- camerasupportedsettings.h и camerasupportedsettings.cpp