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﹕ SUPPORTED: accel 05-09 17:44:55.714 14484-14504/? V/result﹕ SUPPORTED: g 05-09 17:44:55.714 14484-14504/? V/result﹕ SUPPORTED: gyro 05-09 17:44:55.714 14484-14504/? V/result﹕ SUPPORTED: light 05-09 17:44:55.714 14484-14504/? V/result﹕ SUPPORTED: laccel 05-09 17:44:55.714 14484-14504/? V/result﹕ SUPPORTED: mag 05-09 17:44:55.715 14484-14504/? V/result﹕ SUPPORTED: pressure 05-09 17:44:55.715 14484-14504/? V/result﹕ SUPPORTED: prox 05-09 17:44:55.715 14484-14504/? V/result﹕ N/A: humid 05-09 17:44:55.715 14484-14504/? V/result﹕ SUPPORTED: rot