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オブジェクトが渡されたときは、方位、ロール、ヨーといった情報が格納されています。
三軸の加速度センサです。それぞれのセンサの値は、以下を参照します。
このように、渡されたSensorオブジェクトによって格納されるセンサーの情報が変わるわけです。
センサー処理を停止させるときにはSensorManagerクラスのunregisterListener()メソッドを使います。
void unregisterListener(SensorEventListener listener) |
第7回 センサーを使ってみよう(前編)
Step1 Android™ のセンサー機能
Step2 センサーの使い方
Step3 モーションセンサー機能を使ってみよう