Android 3.2。
これどうやってするの?
タブレットが機内に固定されているため、タブレットのカメラを使用できません。
(USBカメラのサポートがなかった2012年にこれを書いた。私はAndroid。でもう働いていません。したがって、最新のAndroidのAPIでそれを行う方法を説明できません。より良い解決策を知っている場合は、ここに投稿してください。)
この議論は、USBカメラ内のセンサーがUVCに準拠している場合にのみ当てはまります(今日のカメラのほとんどは準拠しています)。
この投稿の日付(2012年3月1日)には、デフォルトのAndroid外部カメラでの作業に使用できるAPIはありません。プロジェクトでは、カーネルドライバーと通信するファームウェアを作成してから、Androidアプリケーションレイヤーにデータを表示します。
USBカメラを挿入するとき、最初に確認する必要があるものはほとんどありません。
1)お使いのカメラはUSBポートから電力を得ていますか?(これを行うには、USBポートにUSB-OTGサポートが必要です-USBポートは両方の機能を果たすことができますターゲットとホスト、カメラのライト(存在する場合)が点灯しているかどうかを確認しますか?)
2)/ devディレクトリにノードが作成されますか?(カーネルでv4l2およびUVCサポートが有効になっている場合のみ、ノードが作成されます)。ノードが作成されている場合、USBカメラである実際のハードウェアにアクセスできるようになり、これからは仕事が簡単になります。 Androidファイルシステム内でls -l/dev/v *を実行し、video0またはvideo1が作成されているかどうかを確認します。
4)ノードが作成された場合、ファームウェア(UVC)を作成し、実際のハードウェアからフレームを取得する必要があります。It(UVC)は異なるioctlをサポートしますカーネルのv4l2層と通信し、フレームを取得する呼び出し。
これらのフレームは、ほとんどがYUYV422またはYUYV420形式です。
フレームを受け取ったら、RGBまたはJpegに変換し(Androidが変換をサポートしています)、キャンバスまたはイメージビューに好きな方を表示します。
記録のために、エンコードにffmpegを使用する必要がある場合があります。これにより、画像がビデオに変換されます。
始める前に確認する価値があることの1つは、USBケーブルがマウス、キーボード、USBドライブで動作するかどうかです(USBドライブを機能させるには、一部のデバイスでStickMountアプリが必要になります)。
また、Androidで動作するUSBウェブカメラを取得し、 http://brain.cc.kogakuin.ac.jp/research/で行われたことを再現しようとしています。 usb-e.html 。最後に、Bluetoothウェブカメラはそのまま使用できると聞きました。