Created
June 1, 2012 08:11
-
-
Save chrishuan9/2850191 to your computer and use it in GitHub Desktop.
AB Shakerdemo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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