Skip to content

Instantly share code, notes, and snippets.

@chrishuan9
Created June 1, 2012 08:11
Show Gist options
  • Save chrishuan9/2850191 to your computer and use it in GitHub Desktop.
Save chrishuan9/2850191 to your computer and use it in GitHub Desktop.
AB Shakerdemo
package ch.chrisii;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class AB_ShakerDemoActivity extends Activity implements SensorEventListener{
private SensorManager sensorManager;
private Sensor accelerator;
private boolean initialized;
private float lastX;
private float lastY;
private float lastZ;
private final float NOISE = (float) 1.0;
private View background;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//wichtig sensorManager erst in Oncreate() methode instanzieren
//sonst exception dass der SensorService noch nicht verfügbar ist
sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
//ueber den SensorManager denn accelerometer holen
accelerator = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
setContentView(R.layout.main);
background = findViewById(R.id.colorpanel);
//Liste aller Sensoren holen.
List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ALL);
//Text generieren für Textview
StringBuilder text = new StringBuilder();
for(int i=0; i<sensorList.size(); i++){
text.append(sensorList.get(i).getName());
text.append("\n");
}
//Text setzten
TextView textView = (TextView)findViewById(R.id.sensors_text);
textView.setText(text);
//initialisiert
initialized = false;
}
/* (non-Javadoc)
* @see android.app.Activity#onPause()
*/
@Override
protected void onPause() {
super.onPause();
//unregister sensor
sensorManager.unregisterListener(this);
}
/* (non-Javadoc)
* @see android.app.Activity#onResume()
*/
@Override
protected void onResume() {
super.onResume();
//register sensor
sensorManager.registerListener(this, accelerator, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// can be safely ingored for this demo
}
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
if (!initialized) {
lastX = x;
lastY = y;
lastZ = z;
initialized=true;
}else{
float deltaX = Math.abs(lastX - x);
float deltaY = Math.abs(lastY - y);
float deltaZ = Math.abs(lastZ - z);
if (deltaX < NOISE) deltaX = (float)0.0;
if (deltaY < NOISE) deltaY = (float)0.0;
if (deltaZ < NOISE) deltaZ = (float)0.0;
lastX = x;
lastY = y;
lastZ = z;
if (deltaX > 2 && deltaY > 2){
background.setBackgroundColor(Color.GREEN);
}else{
background.setBackgroundColor(Color.RED);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment