ユーザーID パスワード

技術情報

  • FAQ よくある質問
  • 個人ユーザー向けサービスのお手続きについて
  • M2Mソリューション
  • (PR)FAQを利用してお問い合わせコスト削減

コード&コラム

第7回
センサーを使ってみよう(前編)


前へ 1 |2 |3 |4 次へ

Step2 センサーの使い方

今回は傾きセンサーを使っていきますが、これらを利用するためにはいくつかの手順があるので、このStepではその手順をじっくりと見ていきましょう!

まずはじめに、センサーマネージャというものを使って加速度情報を取得する作業が必要になるのですが、センサーマネージャを取得するために...

SensorManagermanager = (SensorManager)getSystemService(SENSOR_SERVICE);

を記述します。この文ではcontextクラスのgetSystemService()に引数であるSENSOR_SERVICEを渡して、SensorManagerクラスにセットしています。

お決まり文句のようなものだと思ってください。 次に、センサーの情報を取得するためのオブジェクトを取得するために、SensorManagerクラスのgetSensorList()メソッドを使います。

List<Sensor> getSensorList(type)

このメソッドでは引数にtypeをとっていますね。ここにセンサーの定数を渡します。今回使うのは傾きなので引数はSensor.TYPE_ORIENTATIONですが、表に一覧を載せておきますので参考にしてください。

センサー 引数
加速度センサー Sensor.TYPE_ACCELEROMETER
磁気センサー Sensor.TYPE_MAGNETIC_FIELD
ジャイロセンサー Sensor.TYPE_GYROSCOPE
明るさセンサー Sensor.TYPE_LIGHT
傾きセンサー Sensor.TYPE_ORIENTATION
圧力センサー Sensor.TYPE_PRESSURE
近傍センサーー Sensor.TYPE_PROXIMITY
温度センサー Sensor.TYPE_PRESSURE

次に、リスナをSensorManagerに渡して、センサーの処理を開始させるため、SensorManagerクラスのregisterListener()メソッドを使います。

public void registerListener(SensorEventListener listener, Sensor sensor, int rate)

下表が各引数についての説明です。

引数 説明
listener  センサーイベントリスナー
sensor? Sensorオブジェクト
rate 情報通知頻度

情報通知頻度には

定数値 説明
SensorManager.SENSOR_DERAY_FASTEST 端末がセンサデータ取得値を通知できる最も早い通知頻度
SensorManager.SENSOR_DERAY_GAME 各種センサを利用したゲームに適した通知頻度
SensorManager.SENSOR_DERAY_NORMAL 通常の通知頻度
SensorManager.SENSOR_DERAY_UI ユーザーインターフェース利用等に適した通知頻度

の定数を用途に合わせて指定します。

SensorEventオブジェクトは、 制度、タイムスタンプ、値の3つのプロパティを保持しています。

値には、加速度センサーのSensorオブジェクトが渡されたときは、X軸、Y軸、Z軸の情報が格納されています。傾きセンサーのSensorオブジェクトが渡されたときは、方位、ロール、ヨーといった情報が格納されています。
三軸の加速度センサです。それぞれのセンサの値は、以下を参照します。

  • SensorEvent#values[0]:X軸(左右)
  • SensorEvent#values[1]:Y軸(上下)
  • SensorEvent#values[2]:Z軸(前後)

img

このように、渡されたSensorオブジェクトによって格納されるセンサーの情報が変わるわけです。

センサー処理を停止させるときにはSensorManagerクラスのunregisterListener()メソッドを使います。

void unregisterListener(SensorEventListener listener)

第7回 センサーを使ってみよう(前編)
 Step1 Android™ のセンサー機能
 Step2 センサーの使い方
 Step3 モーションセンサー機能を使ってみよう

サンプルコード

第1回 リファレンスコード(文字列編)

第2回 リファレンスコード2(グラフィックス編)

第3回 リファレンスコード3(タッチイベント編)

第4回 リファレンスコード4(チェックボックス/ラジオグループ編)

第5回 リファレンスコード5(スピナー編)

第6回 リファレンスコード6(サウンド/ムービー編)

第7回 リファレンスコード7(トースト編)

第8回 リファレンスコード8(Google Maps API利用編)

第9回 リファレンスコード9(SQLite編)

第10回 リファレンスコード10(音声認識編)

第11回 リファレンスコード11(日付/時刻ダイアログ編)

第12回 リファレンスコード12(Bluetooth編)