Androidのジャイロセンサーの値の取得

Androidのジャイロセンサーの値の取得

Androidのジャイロセンサーの値取得するには
Sensor.TYPE_GYROSCOPE
に対応するセンサーを取得し
SensorEventListenerを設定することで変化を検出できる

まずは、SensorManagerの取得

これは、
Context.getSystemService()
によりSensorManagerのインスタンスを取得することでできる

mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

次に、ジャイロセンサーの登録

SensorManagerクラスの
registerListener()でジャイロセンサーのリスナーを登録

@Override
protected void onResume(){

super.onResume();

//ジャイロセンサーのリスナー登録
List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_GYROSCOPE);

if(sensors.size()>0){
Sensor s = sensors.get(0);
mSensorManager.registerListener(this, s, SensorManager.SENSOR_DELAY_UI);
}
}

ジャイロセンサーの解除は
SensorManagerクラスの
unregisterListener()で行う

@Override
public void onPause(){

//ジャイロセンサーリスナー解除
mSensorManager.unregisterListener(this);
super.onPause();
}

そして、ジャイロセンサーの値取得
これは、
SensorEventListenerを継承し
onSensorChanged()へ
センサーの値が変更されたときの処理を実装することでできる

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

}

@Override
public void onSensorChanged(SensorEvent event){

//ジャイロセンサーの値取得
if(event.sensor.getType() == Sensor.TYPE_GYROSCOPE){

//TextViewインスタンス取得
TextView dataX = (TextView)findViewById(R.id.dataX);
TextView dataY = (TextView)findViewById(R.id.dataY);
TextView dataZ = (TextView)findViewById(R.id.dataZ);

//取得した値をTextViewへセット
dataX.setText(String.valueOf(event.values[0]));
dataY.setText(String.valueOf(event.values[1]));
dataZ.setText(String.valueOf(event.values[2]));
}
}

なお、ジャイロセンサーから取得できる値は
角速度になるため
これを積分すれば角度を求めることができる

単位は、rad/sec

加速度センサーとジャイロセンサーの使い分けは
加速度センサーは移動速度

ジャイロセンサーは、姿勢などを求めるのに使う
あとは、傾きなどの検知
この2つをあわせることで、モーションセンサーにできる

コメントを残す

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