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

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

Этот документ содержит технический обзор приложения 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

Вспомогательная обертка вокруг системного 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.
  • Manual Exp: доступно, если поддерживается CONTROL_AE_MODE_OFF.
  • Manual Focus: включено, если 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. Приложение спроектировано так, чтобы лучше всего выглядеть в темном режиме; любые изменения в светлой палитре следует тщательно тестировать.