今回と次回では「Video4Linux」を利用し、Webカメラの映像をAndroid標準のカメラアプリでプレビュー表示できるようにします。Linuxの標準ドライバなどをAndroidから利用する手法を解説します。

日本Androidの会 金沢支部 出村成和

 今回から本格的にAR(Augmented Reality:拡張現実)の制作に取りかかかります。

 今回は、Webカメラから映像を取り込み、表示するところまで進めます。BeagleBoardはNTTドコモのAndroidケータイ「HT-03A」などと異なり、標準でカメラを装備していません。ですので、市販されているUSB接続のWebカメラを利用して映像を取り込みます。

図1●拡張現実システムのソフトウエア構造
図1●拡張現実システムのソフトウエア構造

 今回のように、Androidアプリから非標準のカメラを使う場合には、大きく分けて2個所を変更する必要があります。(1)Linuxカーネルにカメラを制御するドライバソフトを組み込む、(2)Androidライブラリからその(カーネル内部の)ソフトを扱えるようにライブラリのソースに手を加える――です。このライブラリをアプリケーションから呼び出します(図1)。

 (1)で追加する機能は「Video4Linux」と「UVC」です。

 Video4Linuxは、Linuxでビデオキャプチャデバイス(ビデオキャプチャーボード、Webカメラなど)を扱うAPI群です。Video4Linuxを使えば、デバイスに依存しないアプリケーションを作成できます。

 UVC(USB Video Class)は、USB接続されるWebカメラの規格です。WindowsとMac OS Xでは標準でUVCに対応しており、Linuxにも対応ドライバがカーネルに取り込まれています。また現在市販されているUSB接続のWebカメラは、ほとんどがUVC対応となっています。

 (2)では、フェイクカメラ(Webカメラの映像の代わりに市松模様が表示されています)として実装されているカメラ関連ライブラリを変更します。(1)で追加したドライバから取得した映像をAndroidのメモリー領域(サーフェイス領域)にプレビュー表示させます。