前回に引き続きバッファロー社のパソコン用学習リモコン「PC-OP-RS1」をAndroidから制御するプログラムを作成します。今回と次回では、Androidフレームワークの作成、独自SDK、Androidアプリケーションまでを解説します。

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

 前回は、Linuxカーネルへのデバイスドライバの組み込みから始め、「HAL」(Hardware Abstraction Layer)レベルのドライバや、リモコンの信号を送受信するテストアプリケーションを作成しました。

 今回はその続きとして、前回C/C++言語で作成した「libpcremocon.so」ライブラリを、Javaで作成するAndroidアプリケーションから呼び出せるようにします(図1)。

図1●Javaアプリケーションから家電を操作できるようにする
[画像のクリックで拡大表示]

 さらに、既存のAndroidフレームワークに追加してJavaのクラスライブラリを作り、それを独自SDKとして1つにまとめます。この独自SDKを利用すれば、家電をリモコン操作できるAndroidアプリケーションを作成できるようになります。

C/C++とJavaをつなぐJNI

 今回は、前回作成したPC-OP-RS1を制御する「libpcremocon.so」ライブラリを、Javaクラスライブラリとしても呼び出せるようにします。そのために、既存のAndroidフレームワークの「android.hardware」パッケージに「Pcremocon」クラスを追加します。

 このPcremoconクラスを利用して、前回のようにC/C++言語で作成したアプリケーションからだけでなく、Javaで作成したAndroidアプリケーションからでもPC-OP-RS1が制御できるようにします。

 ただ、libpcremocon.soライブラリは、C/C++言語で作成されているためCPUに依存しています。Javaコードからは直接呼び出せません。これは、Javaが元々CPUに依存しない仮想マシン上で動くように設計されているためです。

 しかし、Javaには、C/C++のようなネイティブの言語をJavaコードから呼び出す「JNI」(Java Native Interface)という機構があります。今回はJNIを使ってlibpcremocon.soライブラリの関数をJavaからでも呼び出せるようにします。

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

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