加速度センサーの値取得

加速度センサーの値取得

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です