[TR] Android Hareket Sensoru kullanimi

Thu, Aug 20, 2015 One-minute read

Android’de chazın hareket etmesi halinde, hareket sensöründen x,y,z koordinatlarında ivmelenme bilgilerini alabiliriz. Bu ivmelerden √(x*x + y*y + z*z) hesaplamasını yaparak gerçek ivmeye ulaşabiliriz. Not: Mobil cihazınızın ayarlarını kontrol ederek sensörün açık olduğundan emin olunuz.

public class MotionActivity extends Avtivity implements SensorEventListener{
    private SensorManager sensorMan;
    private Sensor accelerometer;
    private float[] mGravity;
    private float mAccel;
    private float mAccelCurrent;
    private float mAccelLast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_motion);
        ...
        sensorMan = (SensorManager)getSystemService(SENSOR_SERVICE);
        accelerometer = sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        mAccel = 0.00f;
        mAccelCurrent = SensorManager.GRAVITY_EARTH;
        mAccelLast = SensorManager.GRAVITY_EARTH;
    }
    //sensor tekrar devreye girer
    @Override
    public void onResume() {
        super.onResume();
        sensorMan.registerListener(this, accelerometer,
            SensorManager.SENSOR_DELAY_UI);
    }
    //sensor devre disi
    @Override
    protected void onPause() {
        super.onPause();
        sensorMan.unregisterListener(this);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
            mGravity = event.values.clone();
            //sensorden elde edilen ivme bilgileri
            float x = mGravity[0];
            float y = mGravity[1];
            float z = mGravity[2];
            mAccelLast = mAccelCurrent;
            mAccelCurrent = FloatMath.sqrt(x*x + y*y + z*z);
            float delta = mAccelCurrent - mAccelLast;
            mAccel = mAccel * 0.9f + delta;
            //sensorun calisacagi minimum ivme
            if(mAccel > 3){
                Toast.makeText(getApplicationContext(), "Hareket tespit edildi!",
                    Toast.LENGTH_LONG).show();
            }
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // required method
    }
}