[Android] Sensor 一覧を取得する

Android7

 
アンドロイドではサポートされるセンサー機能は20種類以上になりますが、端末に搭載されているかどうかは別です。

またセンサーデバイスも半導体メーカーによって特性が必ずしも同じではありません。特別なセンサーを使う場合は個別にチェックしないと想定した動きになりません。

下はNexus 5Xのsensor listを表示した例です。

Android Studio 2.2.3
Android 7.1.1

 


Sensor

 
TYPE_ALL

  1. TYPE_ACCELEROMETER
    • 加速度センサー
    • x軸、y軸、z軸の各々の加速度
  2. TYPE_GYROSCOPE
    • ジャイロセンサー
    • x軸、y軸、z軸の回転速度、角速度
  3. TYPE_GYROSCOPE_UNCALIBRATED
    • ジャイロスコープ(生データ)
    • ジャイロドリフトなどを補正しない生データ
  4. TYPE_AMBIENT_TEMPERATURE
    • 周囲温度センサー
    • 端末周囲の温度
  5. TYPE_DEVICE_PRIVATE_BASE
  6. TYPE_GAME_ROTATION_VECTOR
    • 回転ベクトルセンサー(地磁気を除く)
    • 回転ベクトルセンサーから地磁気を除外したもので方位が不要なゲームでの利用を想定している
  7. TYPE_GEOMAGNETIC_ROTATION_VECTOR
    • 地磁気回転ベクトルセンサー
    • 回転ベクトルセンサーと同じだが低消費電力のためジャイロスコープの代わりに地磁気センサーを使用、ただしノイズが多い。屋外使用に適する
  8. TYPE_GRAVITY
    • 重力センサー
    • 重力加速度の計測
  9. TYPE_GYROSCOPE
  10. TYPE_HEART_BEAT
    • 心拍検出
  11. TYPE_HEART_RATE
    • 心拍数
    • 1分間の心拍数
  12. TYPE_LIGHT
    • 照度センサー
    • 周囲の明るさを計測
  13. TYPE_LINEAR_ACCELERATION
    • 加速度センサー(重力を除く)
    • x軸、y軸、z軸、各々の加速度を重力加速度を差し引いた値
  14. TYPE_MAGNETIC_FIELD
    • 地磁気センサー
    • x軸、y軸、z軸方向の磁気の強さを計測
  15. TYPE_MAGNETIC_FIELD_UNCALIBRATED
    • 地磁気センサー(生データ)
    • キャリブレーション無しの地磁気生データ
  16. TYPE_MOTION_DETECT
    • 動作継続検出
    • 動きが5秒、10秒継続的かどうか検出
  17. TYPE_ORIENTATION
    • 傾きセンサー(非推奨)
    • 端末の方位角と傾斜角と回転により傾きを検出
  18. TYPE_POSE_6DOF
    • 回転ベクトルセンサーを更に拡張してたもので、ARなどに使用を想定される youtube
  19. TYPE_PRESSURE
    • 気圧センサー
    • いわゆるヘクトパスカル[㍱]を計測
  20. TYPE_PROXIMITY
    • 近接センサー
    • 端末スクリーンとの距離、あるいは近い・遠い
  21. TYPE_RELATIVE_HUMIDITY
    • 相対湿度センサー
    • 周囲の温度と共に周囲の湿度を計測
  22. TYPE_ROTATION_VECTOR
    • 回転ベクトルセンサー
    • 傾き計測、傾きセンサーよりも精度が高い
  23. TYPE_SIGNIFICANT_MOTION
    • 動作検出センサー
    • 静から動きを検出するウェイクアップセンサー
  24. TYPE_STEP_COUNTER
    • 歩行センサー
    • rebootからの歩数をカウント
  25. TYPE_STEP_DETECTOR
    • 歩行検出センサー
    • 歩行でトリガーがかかる
  26. TYPE_TEMPERATURE
    • 温度センサー(非推奨)

 

sensor list

 
端末のセンサーリストを表示するコードです。
2通りの方法を取っています。
リストを取得して表示
個々のセンサータイプを確認

MainActivity.java

 

activity_main.xml

 
このような表示となりましたが、数あいません。これはセンサー機能を複数のデバイスから出たデータをもとに計算をしたりしているためで、センサー機能個々にセンサーがあるとは限らないからです。
 

 
References:
Sensor
SensorEvent
SensorManager
Motion Sensors