Revision: 13888
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at May 10, 2009 17:16 by mattwagl
Initial Code
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; } } }
Initial URL
Initial Description
Initial Title
Handling Shake Events on Android 1.5
Initial Tags
android
Initial Language
Java