#プログラミング勉強日記
2021年1月18日
Android端末には様々なセンサーが搭載されている。具体的には温度や方位、方角、明るさ、傾き、加速度センサーなどがある。そういったセンサーを使うために必要なセンサーAPIについてまとめる。
#AndroidのセンサーAPI
Androidでは、センサーによって変換された電気信号を取得するためのセンサーAPIが提供されている。このAPIによってセンサーを用いたアプリを簡単に開発できる。
android.hardwareパッケージには、SensorManager、Sensor、SensorEvent、SensorEventListenerの4つのセンサーAPIが提供されている。
##SensorManager
センサーにアクセスするためのクラス。各センサーのイベントリスナーの登録や解除、センサーの情報の取得を行う。
// イベントリスナーを登録するメソッド
registerListener(SensorEventListener listener, Sensor sensor, int rate, Handler handler)
registerListener(SensorEventListener listener, Sensor sensor, int rate)
// イベントリスナーを解除するメソッド
unregisterListener(SensorEventListener listener, Sensor sensor)
unregisterListener(SensorEventListener listener)
// 使用可能なセンサーをリストで取得するメソッド
getSensorList(int type)
定数名 | 説明 |
---|---|
SENSOR_DELAY_FASTEST | 最速通知頻度(デバイスのスペック次第) |
SENSOR_DELAY_NORMAL | 通常のサンプリング |
SENSOR_DELAY_GAME | ゲームに適した早い反応速度 |
SENSOR_DELAY_UI | UI向けの遅い反応速度(ゲームではないアプリ向け) |
##Sensor
各センサーに関する情報を管理するクラス。
// センサーが検出できる最大値を取得するメソッド
getMaximumRange()
// センサーの名前を取得するメソッド
getName()
// センサーからの電気信号をmAで取得するメソッド
getPower()
// センサーの精度を取得するメソッド
getResolution()
// センサーの種類を取得するメソッド
getType()
// センサーのベンダー名を取得するメソッド
getVendor()
// センサーのバージョンを取得するメソッド
getVersion()
センサーの種類
名前 | 説明 |
---|---|
TYPE_ACCELEROMETER | 加速度センサー |
TYPE_MAGNETIC_FIELD | 磁界(磁気)センサー |
TYPE_ORIENTATION | 方位(傾き)センサー |
TYPE_GYROSCOPE | ジャイロスコープセンサー |
TYPE_LIGHT | 照度センサー |
TYPE_PRESSURE | 圧力センサー |
TYPE_TEMPERATURE | 温度センサー |
TYPE_PROXIMITY | 近接センサー |
TYPE_GRAVITY | 重力センサー |
TYPE_LINEAR_ACCELERATION | 直線加速度センサー |
TYPE_ROTATION_VECTOR | 回転角度センサー |
TYPE_ALL | 指定したセンサーの全ての値が取得できる |
##SensorEvent
センサーが取得できる情報を1つにまとめて管理するクラス。
// センサーの精度を格納するフィールド
int accuracy
// Sensorオブジェクトを保持するフィールド
Sensor sensor
// タイムスタンプを格納するフィールド
long timestamp
// センサーの値を格納するフィールド
float[] values
##SensorEventListener
センサー関連のイベントを取得するためのイベントリスナー。SensorManagerのメソッドでこのイベントリスナーの登録や解除をすると、センサーからの情報を取得できる。
// センサーの精度が変わったときに呼び出されるメソッド
onAccuracyChanged(Sensor sensor, int accuracy)
// センサーの値が変わったときに呼び出されるメソッド
onSensorChanged(SensorEvent event)
#参考文献
センサーの概要