[[Gps/位置情報/GPSを使うAndroidアプリを作る]]
UseYourBrain

連載インデックスへ
Androidで動く携帯Javaアプリ作成入門(13)
http://www.atmarkit.co.jp/fsmart/articles/android13/android13_1.html
iPhoneより多彩なAndroidのセンサをアプリで操作

株式会社イーフロー
緒方聡
2010/1/15
真の「ケータイするGoogle」端末「Nexus One」登場!
- PR -

 グーグルがGoogleブランドでケータイを作成しました。その名も「Nexus One」です。(参考:Google、Android 2.1搭載の“スーパーフォン”「Nexus One」を発表)。

 Nexus Oneは、スペックもさることながら、搭載されているAndroidのバージョンが2.1であることの方が開発者としては注目です。Android 2.1は、早速SDKもリリースされ、エミュレータ上で新機能が利用できます。


Google、Android 2.1搭載の“スーパーフォン”「Nexus One」を発表 - ITmedia +D モバイル via kwout

 Android 2.1の新機能は、次回紹介する予定です。

 今回は、目先を変えて、Androidのセンサの使い方を紹介します。センサはAndroidの実機がないと動作確認ができないので、開発のハードルが少し高いかもしれませんが、将来Androidの実機を入手したときのために、参考にしておいてください。

iPhoneより多彩なセンサを使って一味違うアプリを
 Androidがサポートしているセンサは、以下のとおりです。

表1 Androidがサポートしているセンサ一覧
定数 概要
Sensor.TYPE_ACCELEROMETER 加速度センサ
Sensor.TYPE_MAGNETIC_FIELD 磁界(磁気)センサ
Sensor.TYPE_ORIENTATION 方位センサ
Sensor.TYPE_GYROSCOPE ジャイロセンサ
Sensor.TYPE_LIGHT 輝度(照度)センサ
Sensor.TYPE_PRESSURE 圧力センサ
Sensor.TYPE_TEMPERATURE 温度センサ
Sensor.TYPE_PROXIMITY 近接センサ
 一覧には、今回取り上げないセンサも含まれています。この一覧を見ると、ケータイにとって必要不可欠なセンサというものは特になく、「ケータイは、もはや通話やメールだけではなく、これほどまでのことが行えるプラットフォームになったのだな」としみじみ感じさせられます。

 2010年1月現在のiPhone 3GSで使えるのは、加速度・方位・ジャイロ・輝度・近接センサなので、Androidがいかにさまざまな可能性を秘めているかよく分かると思います。

 今回使い方を紹介するセンサは、以下になります。

3-axis Accelerometer sensor(加速度センサ)
3-axis Magnetic field sensor(磁界センサ)
Orientation sensor(方位センサ)
Temperature sensor(温度センサ)
 これらは、Android Dev Phone 1とAndroid 1.6の組み合わせで操作可能なセンサです。ほかのデバイスだと、また違うセンサが搭載されているかもしれません。

AndroidのセンサをJavaアプリから扱う基礎
 個別のセンサの説明に入る前にまず、共通部分について説明します。以下より、今回のサンプルアプリをダウンロードしておいてください。

SensorExample.zip
 Androidのセンサは、Android 1.5でJavaのAPIが変わりました。古いAPIも引き続き使用できますが、Android 1.5以降向けには新しいAPIを使用した方がいいので、今回は新しいAPIのみ説明します。

■ SensorManagerの取得
 センサを使用するには、まずSensorManagerを取得します。

SensorManager manager = (SensorManager)getSystemService(SENSOR_SERVICE);
 上記のように、getSystemService()にSENSOR_SERVICEを渡して取得します。

■ センサの状態を取得するためのリスナを実装
 次に、センサの状態を取得するためのリスナを実装します。

public void onAccuracyChanged(Sensor sensor, int accuracy);
public void onSensorChanged(SensorEvent event);
 SensorEventListenerの上記2つのメソッドを実装します。

 onAccuracyChanged()は、センサの精度が変更された際に呼び出され、onSensorChanged()はセンサの値が変更された際に呼び出されます。確認した限り、Android Dev Phone 1のonAccuracyChanged()は、精度が変更されなくても呼び出されるため、使い道がありません。

■ センサオブジェクトを取得
 続いて、センサオブジェクトを取得します。

List<Sensor> sensors = manager.getSensorList(Sensor.TYPE_TEMPERATURE);
 getSensorList()の引数に、表1「Androidがサポートしているセンサ一覧」の定数を渡します。種類ごとではなく、すべてのセンサを取得したいのであれば、Sensor.TYPE_ALLを渡します。

 なお、センサはリスト(List型)で返されます。例えば、上記コードは温度センサを取得しますが、1つのデバイスに2つの温度センサが搭載されている場合、リストには2つのセンサオブジェクトが格納されて返されます(例えば、据え置きタイプのフォトフレームで、室内用と屋外用の温度センサを持つもの、など)。

 次ページでは、引き続きAndroidのセンサの使い方の基本を確認し、加速度センサと磁界センサを操作しましょう。

コラム 「センサの種類も識別できる」
センサの種類を識別するには、Sensor#getVendor()、Sensor#getName()、Sensor#getVersion()などを使用するといいでしょう。

ちなみに、Android Dev Phone 1に搭載されている温度センサのベンダや名前、バージョンは以下の通りです。

表2 Android Dev Phone 1の温度センサ
ベンダ The Android Open Source Project
名前 AK8976A Temperature sensor
バージョン 1


1-2-3


 Index
第13回 iPhoneより多彩なAndroidのセンサをアプリで操作
Page1
真の「ケータイするGoogle」端末「Nexus One」登場! 
iPhoneより多彩なセンサを使って一味違うアプリを
AndroidのセンサをJavaアプリから扱う基礎
コラム 「センサの種類も識別できる」
Page2
最近のケータイでは当たり前の、加速度センサ 
電磁波のチェックに使える? 磁界センサ
Page3
東西南北が分かる! 方位センサ
身の回りの気温も分かる! 温度センサ
Javaでカメラ、GPSなどのハードウェアも制御しよう

Androidで動く携帯Javaアプリ作成入門 バックナンバー連載インデックスへ&#187;
第1回 Android Market配布を目指しEclipseでHelloWorld!
第2回 Androidアプリ作成の基本“Activity”とは何か?
第3回 ブラウザや地図、ストリートビューの基、Intentとは?
第4回 簡単でワクワクするAndroidウィジェット10連発!
第5回 Androidアプリの使いやすさを左右する5つのレイアウト
第6回 AndroidでSQLiteのDB操作をするための基礎知識
第7回 常駐アプリが作成できるAndroidの“サービス”とは
第8回 アプリを国際化してAndroid Marketから世界へ発信
第9回 Netbookにも広まるAndroidで、かつてないWeb体験を
第10回 Androidのホーム画面に常駐するアプリを作るには
第11回 Android 1.6のジェスチャーとテキスト読み上げを使う
第12回 SurfaceViewならAndroidで高速描画ゲームが作れる
第13回 iPhoneより多彩なAndroidのセンサをアプリで操作
第14回 Android 2.1の新機能で作る、美しく燃える“待ち受け”
第15回 Android NDKでJNIを使用してアプリを高速化するには
第16回 地図/位置情報/GPSを使うAndroidアプリを作るには
第17回 もはやケータイに必須のカメラをAndroidで制御しよう
第18回 開発者が知っておきたいAndroid 2.2新機能 12連発
第19回 XMLレイアウトでAndroidアプリに“設定画面”を追加
第20回 Androidアプリで“アニメーション”するための基礎知識
第21回 アニメーションでAndroidに独創的な画面エフェクトを
第22回 開発者が知って得するAndroid 2.3の新機能18選
第23回 Android 3.0の新APIで簡単ドラッグ&ドロップ実装
第24回 Androidの画面の大きさの違いを解決するFragments
第25回 Compatibility packageで2.x系でもマルチサイズ対応

ご意見、ご感想は Smart&Social 会議室へどうぞ

 Smart&Social フォーラム トップページへ

推奨記事(β)
App Inventor for Androidで使う基本的な部品を知る
Windows 7でセンサや位置情報を使うアプリを作ろう
Windows 7で、どんだけ“おばか”なアプリが作れるの?
iPhoneより多彩なAndroidのセンサをアプリで操作
App InventorでAndroidのセンサを操作するには
powered by newziaコネクト

greetz:AAC

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS