加速度センサーの値取得
加速度センサーの取得は
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軸
を取得している