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

HALドライバを作成する

 次に、Androidから学習リモコンを操作できるように、HALドライバを作成します。HALとは、Hardware Abstraction Layerの略で、ハードウエアを抽象化するライブラリを指します。AndroidでいうHALは、デバイス特有の機能に対して「Android Framework」から簡単にアクセスできるようにする「ラッパー」という位置付けです。HALで扱うハードウエアは、GPS(Global Positioning System)や バイブレータなどがあります。

 では実際にPC-OP-RS1を扱うライブラリを作成してみましょう。先ほどの/hardwareディレクトリ以下には「libhardware」ディレクトリと「libhardware_legacy」ディレクトリがありますが、今回はlibhardwareディレクトリ内に構築していきます。今回のライブラリ名は、「pcremocon」です。作成するファイルおよび構成は図7のようになります。

図7●ファイル配置
図7●ファイル配置

 ビルド方法は前々回と同じです。最初にターゲットとするハードウエアを「TARGET_PRODUCT」環境変数で指定し、かつ便利なコマンド群が利用できるようにするスプリプト「envsetup.sh」を使ってビルド環境を整えます。

% export ANDROID=Androidソースコードを置くディレクトリ 
% export TARGET_PRODUCT=omap3beagle 
% source ./build/envsetup.sh 

 その後、ライブラリとテストのディレクトリに移動しビルドします。ファイルの依存関係も考慮しビルドは、最初に「modules」を実施し、次に「tests」を行います。

% cd $ANDROID/hardware/libhardware/modules/pcremocon/ 
% mm  ← ライブラリのビルド
% cd $ANDROID/hardware/libhardware/tests/pcremocon-recv-test/ 
% mm  ← 受信テストのビルド
% cd $ANDROID/hardware/libhardware/tests/pcremocon-send-test/ 
% mm  ← 送信テストのビルド

 ビルド後、ライブラリは「out/target/product/beagleboard/system/lib」ディレクトリに、テストの実行ファイルは「out/target/product/beagleboard/system/xbin」ディレクトリに生成されます。ライブラリは、SDカードの「android-sys」領域の/system/libディレクトリに、テストの実行ファイルは、/system/xbinディレクトリにコピーします。

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

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