加速度センサーを使う

参考:http://www.adakoda.com/android/000182.html


AndroidManifest.xmlにpermissionを書く必要は無い
SDK9向けに書いた

package org.shokai;

import java.util.List;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class Main extends Activity implements SensorEventListener {

    private SensorManager sm;
    private TextView textViewTrace;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textViewTrace = (TextView) this.findViewById(R.id.TextViewTrace);
        sm = (SensorManager) this.getSystemService(SENSOR_SERVICE);
    }

    @Override
    protected void onResume() {
        super.onResume();
        List<Sensor> sensors = sm.getSensorList(Sensor.TYPE_ACCELEROMETER);
        if (sensors.size() > 0) {
            Sensor sensor = sensors.get(0);
            sm.registerListener(this, sensor,
                    SensorManager.SENSOR_DELAY_FASTEST);
        }
    }

    @Override
    protected void onStop() {
        sm.unregisterListener(this);
        super.onStop();
    }

    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        trace("onAccuracyChanged : " + accuracy);
    }

    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            trace("onSensorChanged : " + event.sensor.getName() + " : " + 
                    ",x:" + event.values[0] + 
                    ", y:" + event.values[1] + 
                    ", z:" + event.values[2]);
        }
    }

    public void trace(String msg) {
        Log.v("AccelTest", msg);
        this.textViewTrace.setText(msg);
    }

}