Androidフォンで絞り、シャッター速度、ISOを制御したい。ハードウェア機能にアクセスする方法はありますか?
2 に答える
これを行うことが不可能だとは言いませんが、すべての、または多くのAndroid フォンに一般化できる方法で行うことは事実上不可能です。Android API によって定義された公式のパスから外れた場合は、ほぼ独力であり、これは基本的に組み込みハードウェア開発プロジェクトです。
基本から始めましょう。カメラ サブシステムの回路図と、画像パイプラインのすべてのデータシートが必要です。サポートするすべての電話に対して。場合によっては、多かれ少なかれ同一のカメラ サブシステムを備えた電話をいくつか見つけることができます (特に、米国で販売されているわずかに異なるキャリア固有のモデルについて話している場合)。気になるスマートフォンと Nexus スマートフォンの類似性。
これは小さな偉業ではありません。私の知る限り、NEXUS フォンでさえ公式の回路図は公開されていません。人気のある携帯電話 (特に、Samsung と HTC) は通常、分解が公開されるため、誰もが大まかな詳細 (カメラ モジュール、ビデオ エンコーディング チップセットなど) を知っていますが、すべてがどのように配線されているかを理解するには、まだ多くの当て推量が必要です.
間違いなく、これはカジュアルなハッキングの領域ではありません。I2C、SPI、MMC、iDCT などの用語が何の意味も持たない場合は、それほど遠くまで到達することはできません。CMOS イメージ センサーがどのようにシリアルに読み取られるか、また RGB 画像を生成するためにベイヤー配列がどのように使用されるかを文字通り理解していない場合は、ほぼ間違いなく頭がおかしくなっています。
だからと言って諦めてあきらめる必要はありませんが、市販の Android フォンのカメラをハッキングしようとするのは、おそらく最善の方法ではないということです。このようなプロジェクトを成功させるために必要な背景知識はたくさんあります。その知識は、自分で制御し、適切なドキュメントを用意しているハードウェア プラットフォームから取得する必要があります。間違いはありません...「ハード」な Android ソフトウェア プロジェクトの階層では、これはリストのトップにかなり近い位置にあります。
私の提案 (少し簡略化して要約): Raspberry Pi を購入し、GPIO ピンから LED を点灯させる方法を学びます。次に、74HC595 シフト レジスタを介して 8 つの LED を選択的に点灯する方法を学びます。次に、ブレークアウト ボード上の SPI アドレス指定フラッシュ チップを購入し、書き込み方法を学習します。ある時点で、Sparkfun.com などから「シリアル」(fyi、「シリアル」!=「rs232」) インターフェイスを備えたビデオ イメージ センサーを購入し、一度に 1 フレームずつ読み取る方法を学び、生の RGB データをダンプします。点滅します。i2c を使用してカメラの制御レジスタを読み書きする方法を学びます。この時点で、Android スマートフォンのカメラで 1 枚の写真を撮る準備ができているかもしれません。
Android フォンから始めることに決めた場合は、少なくとも今のところは「Nexus」デバイスに固執し、(まだ所有していない場合) 回路図、データシート、ソースコードを入手するまでは購入しないでください。あなたの所有で。回路図を自分でトレースできると思って電話を購入しないでください。あなたはしません。少なくとも、あなたが大学院生で、大学院レベルのエレクトロニクス ラボ (X 線機能を備えたもの) を自由に使える場合を除きます。これらのチップとモジュールのほとんどはマイクロ BGA です。マルチメーターでそれらを追跡するつもりはありません。また、私が知っているすべての Android カメラには、ソースが利用できないロード可能なカーネル モジュールに低レベルのドライバー ロジックのほとんどが隠されています。
とはいえ、誰かがこのようなプロジェクトをやってのけるのを見たいと心から思っています。:-)
Androidは、必要なすべての情報を含むオンライントレーニングを公開しています。 ここで見つけることができます-メディアAPI
ただし、制限があり、すべてのハードウェアがすべての種類のパラメータをサポートしているわけではありません。そして、正しく思い出せば、シャッタースピードやISOをコントロールすることはできません。