加速度センサーの値取得
加速度センサーの取得は
Sensor.TYPE_ACCELEROMETER
に対応するセンサーを取得し
SensorEventListener
を設定することで変化を検出できる
まずは、SensorManagerのインスタンス取得
Context.getSystemService()
で
SensorManagerインスタンス取得
@Override protected void inResume(){ super.onResume(); //加速度センサーリスナー設定 List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); if(sensors.size()>0){ Sensor s = sensors.get(0); mSensorManager.registerListener(this, s, SensorManager.SENSOR_DELAY_UI); } }
登録したら、あとで解除するので解除設定
これは、SensorManager.unregisterListener()で解除になる
@Override protected void onPause(){ //加速度センサーリスナー解除 mSensorManager.unregisterListener(this); super.onPause(); }
あとは、加速度センサーの値取得
これは、
SensoreEventListenerを継承し
onSensorChanged()
へセンサーの値が変更されたときの処理を実装
@Override public void onAccuracyChanged(Sensor sensor, int accuracy){ } @Override public void onSensorChanged(SensorEvent event){ //加速度センサーの値取得 if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){ //TextViewのインスタンス取得 TextView dataX = (TextView)findViewById(R.id.dataX); TextView dataY = (TextView)findViewById(R.id.dataY); TextView dataZ = (TextView)findViewById(R.id.dataZ); //TextViewへそれぞれの値をTextViewへ反映させる dataX.setText(String.valueOf(event.values[0])); dataY.setText(String.valueOf(event.values[1])); dataZ.setText(String.valueOf(event.values[2])); } }
センサーを扱うときの注意点としては、
センサーリスナーは、一度登録すると
アプリが終了するまでセンサーが稼働し続けるということ
このため、使っていないときには解除しておくほうが節電になる
一般的には、
登録はonResume()
解除はonPause()
で行う
あと、加速度センサーは
物が動くときに働く加速度を測定するので
event.values[]で取得できる
0でx軸
1でy軸
2でz軸
を取得している