加速度センサーは面白いデバイスですが、使うのがちょっと難しい。
まず、センサーの値を読み取るために必要な事。
public class SampleView extends View implements SensorEventListener {
private SensorManager mSensorManager;
public SampleView(Context context, AttributeSet attrs) {
super(context, attrs);
if( !isInEditMode() ) {
mSensorManager = (SensorManager) context
.getSystemService(Context.SENSOR_SERVICE);
}
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
float fx = event.values[0];
float fy = event.values[1];
float fz = event.values[2];
:
(何かの処理)
:
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
(測定精度が変わったときに呼ばれる)
}
// 測定開始
void startListen() {
mSensorManager.registerListener(this, s,
SensorManager.SENSOR_DELAY_NORMAL);
}
// 測定終了
void stopListen() {
mSensorManager.unregisterListener(this);
}
}
上記Viewを用意して、layoutに
でViewが表示されます。適当な時にstartListenとstopListenを呼び出せば測定が開始終了されます。 ここまでは簡単ですが、問題は測定した値の扱い方です。<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > : <パッケージ名.SampleView android:id="@+id/contents" android:layout_width="match_parent" android:layout_height="match_parent" /> :
コメントする