Перейти к основному содержимому

Документация для разработчиков

Этот документ содержит технический обзор приложения Android Camera Parameters, его архитектуры и рекомендаций по разработке.

Обзор проекта

Приложение представляет собой диагностический инструмент для проверки CameraCharacteristics в Android Camera2. Оно предоставляет современный и удобный интерфейс для изучения уровней оборудования, возможностей и необработанных значений параметров для всех объективов камер на устройстве.

Архитектура

Проект следует архитектурному паттерну MVVM (Model-View-ViewModel) и построен с использованием Jetpack Compose для уровня пользовательского интерфейса.

Основные компоненты

CameraParamsActivity

Единственная точка входа в приложение.

  • Обрабатывает разрешения во время выполнения (CAMERA).
  • Инициализирует Compose UI через setContent.
  • Содержит CameraParamsTheme.

CameraViewModel

Центральный менеджер состояния для пользовательского интерфейса.

  • Поддерживает UiState, который включает список камер, выбранный индекс, категоризированные параметры и поисковый запрос.
  • Определение функций: содержит логику в detectFeatureFlags() для динамического определения аппаратных возможностей, таких как поддержка RAW, OIS и ручная экспозиция.
  • Категоризация: группирует сотни ключей Camera2 в логические разделы (сенсор, объектив и т. д.) для лучшей читаемости.

CameraParamsHelper

Вспомогательная оболочка вокруг Android CameraManager.

  • Извлекает CameraCharacteristics для конкретных идентификаторов.
  • Обеспечивает специализированное форматирование для сложных типов камер (например, преобразование режимов IntArray в удобочитаемые строки).

Уровень пользовательского интерфейса (Jetpack Compose)

Пользовательский интерфейс построен с использованием Material 3 со строго соблюдаемой темной темой.

Структура навигации

Приложение использует androidx.navigation.compose, управляемую в MainScreen.kt.

ЭкранОтветственность
ОбзорВысокоуровневая панель управления, показывающая карточку сводки, уровень оборудования и чипы ключевых функций.
КатегорииРазвертываемый список всех параметров, сгруппированных по разделам, с фильтрацией поиска.
Raw (JSON)Представление всех свойств камеры в формате JSON с подсветкой синтаксиса.
ПодробностиСфокусированный вид для одного параметра, показывающий отформатированное значение и необработанные данные.

Стилизация

  • Тема: определена в Theme.kt.
  • Цвета: основной цвет #7B61FF (фиолетовый) используется для выделений и основных действий.
  • Поверхность: темный фон #121417 с вариантами #1E1F23 для карточек.

Ключевая логика

Динамическое определение функций

Чипы «Ключевые функции» на панели мониторинга не являются статичными. Они вычисляются в CameraViewModel.detectFeatureFlags():

  • RAW: проверяется через REQUEST_AVAILABLE_CAPABILITIES_RAW.
  • OIS: обнаруживается, если LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION содержит ON.
  • Ручная эксп.: доступна, если поддерживается CONTROL_AE_MODE_OFF.
  • Ручной фокус: включен, если LENS_INFO_MINIMUM_FOCUS_DISTANCE больше 0.

Руководство по разработке

Предварительные условия

  • Android Studio Ladybug (или новее).
  • Kotlin 2.0+ (проект использует новый плагин Gradle Compose Compiler).
  • Минимальный SDK: 21 (Android 5.0).

Добавление новой категории

Чтобы добавить или изменить группировку параметров, обновите метод getCategoryForKey() в CameraViewModel.kt. Он использует сопоставление строк имен ключей камер для назначения их категориям.

Обновление темы

Цвета можно настроить в Color.kt. Приложение спроектировано так, чтобы лучше всего выглядеть в темном режиме; любые изменения светлой палитры должны быть тщательно протестированы.