by robbycandra » Mon Apr 30, 2012 8:12 am
automatic flip axis - AccelerometerHandle For SuperJumper
public class AccelerometerHandler implements SensorEventListener {
private float accelX;
private float accelY;
private float accelZ;
private int deviceOrientation;
private Context mCtx;
public AccelerometerHandler(Context context) {
mCtx = context;
SensorManager manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
if (manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size() != 0) {
Sensor accelerometer = manager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
manager.registerListener(this, accelerometer,SensorManager.SENSOR_DELAY_GAME);
}
deviceOrientation=(WindowManager)mCtx.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// nothing to do here
}
@Override
public void onSensorChanged(SensorEvent event) {
boolean isLandscape = mCtx.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
if (isLandscape == false && deviceOrientation != Surface.ROTATION_0) {
accelX = event.values[1];
accelY = -event.values[0];
} else {
accelX = event.values[0];
accelY = event.values[1];
}
accelZ = event.values[2];
}
public float getAccelX() { return accelX; }
public float getAccelY() { return accelY; }
public float getAccelZ() { return accelZ; }
}