連載
» 2014年06月26日 18時00分 UPDATE

Androidで動く携帯Javaアプリ作成入門(52):Android WearやIoTで注目のAndroidセンサー機能8選 (1/3)

ついに正式版が発表されたAndroid WearやIoTでの活用で注目したい、Androidがサポートするステップカウンター/検出器、回転ベクター/接近/温度/湿度/気圧/照度センサーなどについて解説。

[緒方聡,株式会社イーフロー]
「Androidで動く携帯Javaアプリ開発入門」のインデックス

連載目次

Android Wear正式版発表!

 本日(米国時間2014年6月25日)開催された「Google I/O 2014」の基調講演で、Android Wearの正式版が発表されました。正式版のSDKは米国時間2014年6月26日から提供を開始予定です。

android52_00.jpg Android Wear SDK

 日本時間6月25日現在までのAndroid Wearはデベロッパープレビューを公開中で(詳しくは記事「Android Wear」のデベロッパープレビュー公開)、デベロッパー登録を行うことで、プレビュー版の開発用サポートライブラリをグーグルより受け取ることができます。

 身に付ける小さなデバイスなので、音声操作やセンサーなど、スマートフォンやタブレットとはまた違った技術が重要になってきます。

 エミュレーターのシステムイメージは既に頒布されているため、HelloWorld!ぐらいは動作させることはできますが、サポートライブラリがなければAndroid Wearの機能を利用できません。こちらは正式版のSDKがリリースされると使えるようになるのではないでしょうか。

android52_01.jpg 図1 Android Wearのプレビューイメージ

 Android Wearに興味のある開発者は、「Android Wear | Android Developers」からデベロッパー登録をして情報を事前に入手しておくとよいでしょう。

なぜウェアラブル端末でセンシング技術が重要なのか

 さて、今回は前回の「ウェアラブル時代に見直したいAndroidの加速度/重力センサー、ジャイロスコープ」に引き続きAndroidのセンサーを取り扱います。今回はステップカウンターとステップ検出器、回転ベクターセンサー、接近センサー、そして、IoT(Internet of Things:モノのインターネット)での活用が期待される温度センサー、湿度センサー、気圧センサー、照度センサーなどを取り上げます。

 記事としては取り上げませんが、サンプルは実装されているものもあるので、以下サンプルアプリをダウンロードして、実際に動作させて確認してみてください。

 なぜ、これらを取り上げるかというと、これも今後Android Wearが普及したり、IoTの活用が増えたりすることで、センシング技術が重要になってくると考えられるためです。そこでAndroid Wearでセンサーが重要になると考えられる理由をいくつか挙げてみましょう(全て筆者の想定であることに留意ください)。

 Android Wearは常に身に付ける端末です。腕時計型端末がイメージしやすいですね。画面はタッチ可能ですが、腕時計の盤面程度の大きさしかないため、多くのことをタッチ操作で行うのは大変です。そこでジャイロスコープや回転ベクターセンサーがあるとどうでしょうか。腕をくるくるっとひねるだけで省電力状態から復帰するなら、反対の手でタッチするよりも簡単かもしれません。

 スマートフォンではあまり有効活用できなかった接近センサーも、腕時計型端末なら有効活用できそうです。常に身に付ける端末なので、ステップ検出器なども搭載されていてほしいですね。

Android 4.4で追加された「ステップカウンター」「ステップ検出器」

 ステップカウンターとステップ検出器は、2014年6月時点ではNexus 5でしか動作確認が行えないと思います。温度センサー、湿度センサーはGalaxy S4に実装されていました。その他のセンサーは、多くの端末で実装されていると思います。

 Android 4.4から導入されたステップカウンター(TYPE_STEP_COUNTER)、ステップ検出器(TYPE_STEP_DETECTOR)について説明します。

 これらは名前からも分かる通り、歩数計を実装するために大変便利なセンサーです。端末にどちらかのセンサーが実装されていれば、そのセンサーを使用して歩数計を実装可能です。

 ステップカウンターとステップ検出器は、以下のような特徴があります。

ステップカウンター

 SensorEvent#values[0]に歩数の累計が渡されてきます。型はfloatですが、intにキャストして使用できます。

android52_02.jpg 図2 ステップカウンター

 サンプルでは歩数累計値をそのまま表示しています。

 この歩数累計値はセンサー内部で永続化されており、他のアプリと共有することになります。つまり、イベントで通知される値はその端末で検出された歩数の累計であり、自分のアプリだけの累計ではないことに注意する必要があります。

 また、歩数累計値を初期化するAPIは用意されていません。唯一初期化する方法は、端末自身の再起動です。

 ステップ検出器と異なり、センサーにリスナーを設定すると、歩いていないにもかかわらず即座にイベントが通知され累計値を取得できます。この動作は累計歩数を画面表示する際などに向いています。もちろん歩き始めると、累計歩数が更新されてイベントが発生します。ただし、累計歩数値は必ず1ずつ更新されて渡されてくるとは限りません(Nexus 5の場合)。

ステップ検出器

 SensorEvent#values[0]に1.0が渡されてきます。値は必ず1.0なので、値を見る必要はありません。

android52_03.jpg 図3 ステップ検出器

 サンプルでは、イベントが通知されてくるたびに、中央の矩形の色を「赤→青→黄色」と変化させています。

 歩行を検出したタイミングでイベントが発生するので、アプリで歩数を表示したいのであれば、アプリ内で管理している値をインクリメントする実装になるでしょう。イベントは必ず1歩ずつ通知されてくるようです(Nexus 5の場合)。

 ステップ検出はよくできており、端末を手で持って上下に振ってもイベントは発生しません。歩かずにイベントを発生させるには、歩いた時と同じような振動を起こすようにします。具体的には、手で端末を持って机をノックするとよいようです。

 Nexus 5で私が確認した限りでは、1割ぐらい多めに検出されるようです。100歩で110回イベントが発生する感じの精度です。Nintendo 3DSの歩数計と比較するとかなり良い精度です。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。