メインコンテンツまでスキップ

開発者ドキュメント

このドキュメントでは、Android Camera Parametersアプリケーションの技術的な概要、アーキテクチャ、および開発ガイドラインを提供します。

プロジェクトの概要

このアプリケーションは、Android Camera2のCameraCharacteristicsを検査するための診断ツールです。デバイス上のすべてのカメラレンズのハードウェアレベル、機能、および生のパラメータ値を探索するための、モダンでユーザーフレンドリーなインターフェースを提供します。

アーキテクチャ

プロジェクトはMVVM (Model-View-ViewModel)アーキテクチャパターンに従い、UIレイヤーにはJetpack Composeを使用して構築されています。

主要コンポーネント

CameraParamsActivity

アプリケーションの唯一のエントリポイントです。

  • 実行時の権限(CAMERA)を処理します。
  • setContentを介してCompose UIを初期化します。
  • CameraParamsThemeをホストします。

CameraViewModel

UIの中心的な状態マネージャーです。

  • カメラのリスト、選択されたインデックス、カテゴリ分けされたパラメータ、検索クエリを含むUiStateを保持します。
  • 機能検出: detectFeatureFlags()に、RAWサポート、OIS、マニュアル露出などのハードウェア機能を動的に判断するロジックが含まれています。
  • カテゴリ分け: 読みやすさを高めるために、何百ものCamera2キーを論理的なセクション(センサー、レンズなど)にグループ化します。

CameraParamsHelper

AndroidのCameraManagerをラップするユーティリティです。

  • 特定のIDのCameraCharacteristicsを取得します。
  • 複雑なカメラタイプ(IntArrayモードを人間が読める文字列に変換するなど)に対して特別なフォーマットを提供します。

UIレイヤー (Jetpack Compose)

UIはMaterial 3を使用して構築されており、ダークテーマが厳密に適用されています。

ナビゲーション構造

アプリはMainScreen.ktで管理されるandroidx.navigation.composeを使用しています。

画面役割
Overviewサマリーカード、ハードウェアレベル、主要機能チップを表示するハイレベルなダッシュボード。
Categoriesセクションごとにグループ化された、検索フィルタリング付きの全パラメータの展開可能なリスト。
Raw (JSON)すべてのカメラプロパティの構文ハイライトされたJSON表現。
Detailフォーマットされた値と生データを表示する、単一パラメータのフォーカスビュー。

スタイリング

  • テーマ: Theme.ktで定義されています。
  • カラー: ハイライトや主要なアクションに使用されるプライマリカラー #7B61FF (バイオレット)。
  • サーフェス: ダーク背景 #121417 と、カード用の #1E1F23 バリアント。

主要なロジック

動的な機能検出

ダッシュボードの「主要機能」チップは静的ではありません。これらはCameraViewModel.detectFeatureFlags()で計算されます。

  • RAW: REQUEST_AVAILABLE_CAPABILITIES_RAWを介してチェックされます。
  • OIS: LENS_INFO_AVAILABLE_OPTICAL_STABILIZATIONONが含まれている場合に検出されます。
  • Manual Exp: CONTROL_AE_MODE_OFFがサポートされている場合に使用可能です。
  • Manual Focus: LENS_INFO_MINIMUM_FOCUS_DISTANCEが0より大きい場合に有効になります。

開発ガイド

前提条件

  • Android Studio Ladybug(またはそれ以降)。
  • Kotlin 2.0+(プロジェクトは新しいCompose Compiler Gradleプラグインを使用しています)。
  • 最小SDK: 21 (Android 5.0)。

新しいカテゴリの追加

パラメータのグループ化を追加または変更するには、CameraViewModel.ktgetCategoryForKey()メソッドを更新してください。カメラキー名との文字列一致を使用して、カテゴリを割り当てます。

テーマの更新

Color.ktで色を調整できます。アプリはダークモードで最適に見えるように設計されています。ライトパレットへの変更は慎重にテストする必要があります。