Search
Sponsors
Sponsors

Handling shake events

 

package com.gedankentank.android.sensor;

import java.util.List;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.Log;

public class AccelerometerListener implements SensorEventListener {
   
    private SensorManager sensorManager;
    private List<Sensor> sensors;
    private Sensor sensor;
    private long lastUpdate = -1;
    private long currentTime = -1;
   
    private float last_x, last_y, last_z;
    private float current_x, current_y, current_z, currenForce;
    private static final int FORCE_THRESHOLD = 900;
    private final int DATA_X = SensorManager.DATA_X;
    private final int DATA_Y = SensorManager.DATA_Y;
    private final int DATA_Z = SensorManager.DATA_Z;
   
    public AccelerometerListener(Activity parent) {
        SensorManager sensorService = (SensorManager) parent.getSystemService(Context.SENSOR_SERVICE);
        this.sensorManager = sensorManager;
        this.subscriber = subscriber;
        this.sensors = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
        if (sensors.size() > 0) {
            sensor = sensors.get(0);
        }
    }
    public void start () {
        if (sensor!=null)  {
            sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);
        }
    }
   
    public void stop () {
        sensorManager.unregisterListener(this);
    }
   
    public void onAccuracyChanged(Sensor s, int valu) {
       
       
    }
    public void onSensorChanged(SensorEvent event) {
       
        if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER || event.values.length < 3)
              return;
       
        currentTime = System.currentTimeMillis();
       
        if ((currentTime - lastUpdate) > 100) {
            long diffTime = (currentTime - lastUpdate);
            lastUpdate = currentTime;
           
            current_x = event.values[DATA_X];
            current_y = event.values[DATA_Y];
            current_z = event.values[DATA_Z];
           
            currenForce = Math.abs(current_x+current_y+current_z - last_x - last_y - last_z) / diffTime * 10000;
           
            if (currenForce > FORCE_THRESHOLD) {
           
                // Device has been shaken now go on and do something
                // you could now inform the parent activity …
               
            }
            last_x = current_x;
            last_y = current_y;
            last_z = current_z;

        }
    }

}

Related posts:

  1. playing a mp3 using service   //MyService.java package com.v3; import android.app.Service; import android.content.Intent; import android.media.MediaPlayer;...
  2. Insert a contact   private Uri insertContact(Context context, String name, String phone) {...
  3. Download an image from the internet   //MainActivity.java package com.v3; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection;...
  4. Identify an android device   import android.provider.Settings.Secure;    private String android_id = Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID);...
  5. ListActivity example   public class ListAct extends ListActivity { public final String[]...

Related posts brought to you by Yet Another Related Posts Plugin.

Leave a Reply

Translate