Androidでサポートされているセンサを取得する

http://seesaawiki.jp/w/moonlight_aska/d/%A5%BB%A5%F3%A5%B5%A1%BC%A4%CE%B0%EC%CD%F7%A4%F2%BC%E8%C6%C0%A4%B9%A4%EB

Nexus5で試した

MPU6515 Accelerometer
    AK8963 Magnetometer
    AK8963 Magnetometer Uncalibrated
    MPU6515 Gyroscope
    MPU6515 Gyroscope Uncalibrated
    APDS-9930/QPDS-T930 Proximity & Light
    APDS-9930/QPDS-T930 Proximity & Light
    BMP280 Barometer
    Gravity
    Linear Acceleration
    Rotation Vector
    Step Detector
    Step Counter
    Significant Motion Detector
    Game Rotation Vector
    GeoMagnetic Rotation Vector
    Orientation
    Tilt Detector
    MPU6515 Game Rotation Vector Secondary
    AMD
    RMD
    Basic Gestures
    Tap
    Facing
    Tilt
    Pedometer
    PEDESTRIAN-ACTIVITY-MONITOR

指してるものが不明なものがあるので、次のコードで試してみた。
UIスレで回すと落ちたのでAsyncTask内で実行している。

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import java.util.HashMap;
import java.util.List;

public class MainActivity extends Activity implements SensorEventListener {
    SensorManager mSensorManager;
    HashMap<String,Integer> sensorList;
    final String[] sensorLabels = {"accel","atmep","g","gyro","light","laccel","mag","pressure","prox","humid","rot"};

    protected void createSensorList(){
        sensorList = new HashMap<>();
        sensorList.put("accel", Sensor.TYPE_ACCELEROMETER);
        sensorList.put("atemp", Sensor.TYPE_AMBIENT_TEMPERATURE);
        sensorList.put("g",Sensor.TYPE_GRAVITY);
        sensorList.put("gyro", Sensor.TYPE_GYROSCOPE);
        sensorList.put("light",Sensor.TYPE_LIGHT);
        sensorList.put("laccel", Sensor.TYPE_LINEAR_ACCELERATION);
        sensorList.put("mag",Sensor.TYPE_MAGNETIC_FIELD);
        sensorList.put("pressure",Sensor.TYPE_PRESSURE);
        sensorList.put("prox",Sensor.TYPE_PROXIMITY);
        sensorList.put("humid",Sensor.TYPE_RELATIVE_HUMIDITY);
        sensorList.put("rot",Sensor.TYPE_ROTATION_VECTOR);
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        createSensorList();

        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

        new AsyncTask<Void,Void,String>(){
            @Override
            protected String doInBackground(Void... voids) {
                for (String s : sensorLabels) {
                    try {
                        int sensorId = sensorList.get(s);
                        List<Sensor> sensors = mSensorManager.getSensorList(sensorId);
                        if(sensors.size() > 0){
                            Log.v("result","SUPPORTED: "+s);
                        } else {
                            Log.v("result","N/A: " +s);
                        }
                    } catch (RuntimeException e){
                        e.printStackTrace();
                    }
                }
                return null;
            }
        }.execute();

    }

    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int i) {

    }
}

結果
humidity sensor以外は使えるっぽい

05-09 17:44:55.713  14484-14504/? V/result&#65109; SUPPORTED: accel
05-09 17:44:55.714  14484-14504/? V/result&#65109; SUPPORTED: g
05-09 17:44:55.714  14484-14504/? V/result&#65109; SUPPORTED: gyro
05-09 17:44:55.714  14484-14504/? V/result&#65109; SUPPORTED: light
05-09 17:44:55.714  14484-14504/? V/result&#65109; SUPPORTED: laccel
05-09 17:44:55.714  14484-14504/? V/result&#65109; SUPPORTED: mag
05-09 17:44:55.715  14484-14504/? V/result&#65109; SUPPORTED: pressure
05-09 17:44:55.715  14484-14504/? V/result&#65109; SUPPORTED: prox
05-09 17:44:55.715  14484-14504/? V/result&#65109; N/A: humid
05-09 17:44:55.715  14484-14504/? V/result&#65109; SUPPORTED: rot