真の「ケータイするGoogle」端末「Nexus One」登場!
- - PR -
グーグルがGoogleブランドでケータイを作成しました。その名も「Nexus One」です。(参考:Google、Android 2.1搭載の“スーパーフォン”「Nexus One」を発表)。
Nexus Oneは、スペックもさることながら、搭載されているAndroidのバージョンが2.1であることの方が開発者としては注目です。Android 2.1は、早速SDKもリリースされ、エミュレータ上で新機能が利用できます。
Android 2.1の新機能は、次回紹介する予定です。
今回は、目先を変えて、Androidのセンサの使い方を紹介します。センサはAndroidの実機がないと動作確認ができないので、開発のハードルが少し高いかもしれませんが、将来Androidの実機を入手したときのために、参考にしておいてください。
iPhoneより多彩なセンサを使って一味違うアプリを
Androidがサポートしているセンサは、以下のとおりです。
| 表1 Androidがサポートしているセンサ一覧 | ||||||||||||||||||
|
一覧には、今回取り上げないセンサも含まれています。この一覧を見ると、ケータイにとって必要不可欠なセンサというものは特になく、「ケータイは、もはや通話やメールだけではなく、これほどまでのことが行えるプラットフォームになったのだな」としみじみ感じさせられます。
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アプリから扱う基礎
個別のセンサの説明に入る前にまず、共通部分について説明します。以下より、今回のサンプルアプリをダウンロードしておいてください。
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に搭載されている温度センサのベンダや名前、バージョンは以下の通りです。
|
| Index | ||||||||
|
||||||||
Androidで動く携帯Javaアプリ作成入門 バックナンバー 連載インデックスへ»
- 第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系でもマルチサイズ対応
- 第26回 開発者が知らないと損するAndroid 4.0の新機能44選
- 第27回 Android 4.0でアプリ開発を始めるための環境構築
- 第28回 Android 4.0で注目の顔認識をアプリに組み込むには
| ご意見、ご感想は Smart&Social 会議室へどうぞ |
| Smart&Social フォーラム トップページへ |
TechTargetジャパン
- 検索技術を使うなら知ってないと損する6つのこと (2012/2/9)
ソーシャルアプリなど大規模Webサービスや企業内システムでも欠かせない検索技術のまとめ - AWSとAndroidを直結するSDKで何ができるのか? (2012/2/3)
簡単なコーディングでAndroidアプリからAmazon S3のストレージに直接接続できるサンプルを基にSDKの使い方を紹介 - HTML5/jQuery MobileなどスマホWeb開発記事33選 (2012/1/31)
スマートフォン向けWebアプリを作るための@IT記事のまとめ。HTMLやCSS、JavaScript/jQuery自体の基礎学習記事も紹介 - iPhoneで動くARアプリを作るためのライブラリ10選 (2012/1/25)
ARToolkitをはじめ、iOS(iPhone/iPad)で使えるAR(拡張現実)を実現するためのさまざまなライブラリをサンプルやコードを交えて紹介
|
|
キャリアアップ
スポンサーからのお知らせ
イベントカレンダー
- - PR -


