●No Signal Alert

 「No Signal Alert」は,電波が入らない場所に来ると音や振動で知らせてくれるアプリケーションだ(写真3)。登録者名「Smart Android Apps」が公開している。

写真3 No Signal Alertが「圏外」を通知しているところ
写真3 No Signal Alertが「圏外」を通知しているところ
[画像のクリックで拡大表示]

 このアプリケーションの特徴は,ユーザーの操作が必要なのは設定画面だけで,1度設定すれば,実際の電波状態の監視はサービスが実行していることだ。設定は画面(アクティビティ)で実施し,その内容を既に起動しているNo Signal Alertのサービスに反映するために,Binderドライバを利用している。

 No Signal Alertのサービスは,電波の状況を確認し,電波が圏外であった場合には警告を表示するという,簡単な仕組みだ(図9)。

図9 アプリケーション「No Signal Alert」の内部の動き
図9 アプリケーション「No Signal Alert」の内部の動き
[画像のクリックで拡大表示]

 まずはハードウエアが電波状態を受け取る。受け取った情報はカーネルのTelephonyドライバに送られる。

 フレームワーク層のTelephony Managerは,ドライバとアプリケーションをつなぎ,電波状態の変化をアプリケーションに都度通知するAPIを提供している。電波状況を受け取ったアプリケーションは,圏外であれば,あらかじめユーザーの設定した方法で通知する。

 通知の手段としてバイブレーションやオーディオなどを使う。No Signal Alertは端末を振動させたり,音声ファイルを再生したりする。これらを利用するためのAPIもフレームワークが提供している。

 音声ファイルの再生には,ライブラリ層のMedia Frameworkを利用している。圧縮された音声データを復号(デコード)して再生するためにフレームワーク層の内部から自動的にMedia Frameworkを呼び出している。

 電波状況やバイブレーション,オーディオなど,ハードウエアと関連するAPIでは,フレームワークの内部でネイティブ・コードが実行されている。これは JNIにより,Dalvik VMを通じて実行されている。そのため,アプリケーション開発者はネイティブ・コードの存在を意識することなく,アプリケーションを開発できる。

☆   ☆   ☆

 Linuxをベースとした携帯端末プラットフォームは「LiMo Platform」が既にあり,Androidが初めてではない。また,機種に依存しない実行環境とフレームワークという点では,Javaがある。細かな違いや工夫はあるが,一つひとつを見れば,Androidには特に目新しい点がないと思われるかもしれない。しかし,それら「すべて」を兼ね備えているプラットフォームはAndroidが初めてだ。Linuxカーネルをベースに,アプリケーション実行環境とフレームワークを備える携帯端末に最適化されたプラットフォームが,オープンソースで入手できることこそが,Androidの最大の特徴といえるだろう。