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

ライブラリをVideo4Linux対応に

 ライブラリ単体でビルドできるように準備が整ったところで、カメラ関連のライブラリのソースコードをVideo4Linux対応に変更していきましょう。これにより、Video4Linuxで取り込んだ画像が、画面を描画するメモリー領域(サーフェイス領域)に反映されるようになります。

 今回変更するカメラ関連のライブラリのソースコードは「frameworks/base/camera/libcameraservice/」ディレクトリにあります。これ以外のライブラリは変更しません。変更も含めたソースコードは、「GitHub」に用意しました。以下のようにして取得します*2

% git clone git@github.com:demuyan/android-AR-Controller.git 
% git checkout android-ar-3 

 カメラ関連のライブラリは、デフォルトでは先ほど述べたようにフェイクカメラが用意されているのみです。というのも、カメラは様々なデバイスの種類があり、それらに依存する機能なので、標準となるコードを用意できないためです。

 GitHubからデータを取得した後、以下のようにビルドします。

% export TARGET_PRODUCT=omap3beagle 
% cd frameworks/base/camera/libcameraservice/ 
% mm 

 これらのコマンドについて解説します。まず、環境変数「TARGET_PRODUCT」についてです。EM1ではTARGET_PRODUCTは「omap3beagle」に設定されていますので、忘れず設定しておきましょう。TARGET_PRODUCTの設定を忘れてしまうと、初期設定であるTARGET_PRODUCT=genericが有効となり、ビルドに失敗します。

 次にframework/base/camera/libcameraservice/ディレクトリに移動し、mmコマンドを実行しています。mmコマンドは、カレントディレクトリにある「Android.mk」を参考にライブラリをビルドします。Android.mkは、ライブラリファイルをビルドするのに必要なソースコードの構成や依存関係が記述してあるファイルです。

 ビルド後、「out/target/product/omap3beagle/system/lib/」ディレクトリに新しいファイルの「libcamera.so」と「libcameraservice.so」が作成されます。この2ファイルを、Androidを起動しているSDカードの「/system/lib/」に上書きコピーします。

 仕上げとして、どのユーザーでもビデオデバイスにアクセスできるように起動用スクリプトの「init.rc」で「/dev/video0」ディレクトリのアクセス権限を「666」に設定します(chmod 666 /dev/video0)。ただし、EM1での場合はあらかじめ設定してあります。

 このアクセス権限の設定もEM1では最初から設定されているのですが、本来必要な手順なのであえて説明しています。

 また今回は、お手軽に試せるようにビルド済バイナリーパッケージを用意しました。このファイルをダウンロードしSDカードにコピーするだけで、実行環境が構築できます。詳細はファイル内のReadme.txtを参考してください。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら