web-dev-qa-db-ja.com

AndroidアプリケーションでUSBカメラを使用

Android 3.2。

これどうやってするの?

タブレットが機内に固定されているため、タブレットのカメラを使用できません。

23
neoffreeman

(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を使用する必要がある場合があります。これにより、画像がビデオに変換されます。

34
mk..

始める前に確認する価値があることの1つは、USBケーブルがマウス、キーボード、USBドライブで動作するかどうかです(USBドライブを機能させるには、一部のデバイスでStickMountアプリが必要になります)。

また、Androidで動作するUSB​​ウェブカメラを取得し、 http://brain.cc.kogakuin.ac.jp/research/で行われたことを再現しようとしています。 usb-e.html 。最後に、Bluetoothウェブカメラはそのまま使用できると聞きました。

1
bbodenmiller