Документация для разработчиков
Этот документ содержит технический обзор приложения 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. Приложение спроектировано так, чтобы лучше всего выглядеть в темном режиме; любые изменения светлой палитры должны быть тщательно протестированы.