Android のセンサ
Android に搭載されているセンサは以下のとおり(Android 2.2 (API level 8) 現在):
(もちろん,機種ごとに実装が異なる)
android.hardware.Sensor.TYPE_ORIENTATION | 方位(傾き)センサ |
android.hardware.Sensor.TYPE_ACCELEROMETER | 加速度センサ |
android.hardware.Sensor.TYPE_TEMPERATURE | 温度センサ |
android.hardware.Sensor.TYPE_MAGNETIC_FIELD | 磁場センサ |
android.hardware.Sensor.TYPE_LIGHT | 光センサ |
android.hardware.Sensor.TYPE_PROXIMITY | 近接センサ |
android.hardware.Sensor.TYPE_GYROSCOPE | ジャイロスコープ |
android.hardware.Sensor.TYPE_PRESSURE | 加圧センサ |
なお,2.2 より TYPE_ORIENTATION は非推奨となり,加速度センサと磁場センサを用いて傾きを検出することが推奨されている.
- HTC Desire (SoftBank X06HT)に搭載されているセンサ:加速度,磁場,方位,近接,光の5種類.
- Camangi FM600 に搭載されているセンサ:加速度,磁場,方位,光の4種類.
Camangi FM600 は折角,Android 2.2 を載せているのにケチってしまいましたね(^^)
端末に搭載されているセンサ一覧を表示するプログラムを以下に示す.
package jp.android.hellosensor; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import android.hardware.SensorManager; //センサー管理用 import android.hardware.Sensor; //センサー管理用 public class HelloSensorActivity extends Activity { //センサー情報表示用テキストビュー TextView mStatusText; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mStatusText = (TextView)findViewById(R.id.statuslines); } @Override public void onResume(){ super.onResume(); StringBuffer buff = new StringBuffer(); //センサー管理 SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); List<Sensor> sensors = sm.getSensorList(Sensor.TYPE_ALL); //搭載されているセンサー情報を取得 buff.append("搭載されているセンサ:\n"); for(Sensor sensor: sensors){ int sensorType = sensor.getType(); switch(sensorType){ case Sensor.TYPE_ORIENTATION: buff.append("方位(傾き)センサ\n"); break; case Sensor.TYPE_ACCELEROMETER: buff.append("加速度センサ\n"); break; case Sensor.TYPE_TEMPERATURE: buff.append("温度センサ\n"); break; case Sensor.TYPE_MAGNETIC_FIELD: buff.append("磁場センサ\n"); break; case Sensor.TYPE_LIGHT: buff.append("光センサ\n"); break; case Sensor.TYPE_PROXIMITY: buff.append("近接センサ\n"); break; case Sensor.TYPE_GYROSCOPE: buff.append("ジャイロスコープ\n"); break; case Sensor.TYPE_PRESSURE: buff.append("加圧センサ\n"); break; default: buff.append("unknown sensor\n"); break; } } mStatusText.setText(buff.toString()); } }