package com.uoc.educationalVG.framework.impl;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

public class AccelerometerHandler implements SensorEventListener {
	float accelX;
	float accelY;
	float accelZ;

	/**
	 * The constructor takes a Context, from which it gets a SensorManager
	 * instance to set up the event listening
	 * 
	 * @param context
	 */
	public AccelerometerHandler(Context 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);
		}
	}

	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
		// nothing to do here
	}

	/**
	 * we fetch the accelerometer values from the provided SensorEvent and store
	 * them in the handler’s members.
	 */
	@Override
	public void onSensorChanged(SensorEvent event) {
		accelX = event.values[0];
		accelY = event.values[1];
		accelZ = event.values[2];
	}

	/**
	 * @return the current acceleration for X axis.
	 */
	public float getAccelX() {
		return accelX;
	}

	/**
	 * @return the current acceleration for Y axis.
	 */
	public float getAccelY() {
		return accelY;
	}

	/**
	 * @return the current acceleration for Z axis.
	 */
	public float getAccelZ() {
		return accelZ;
	}
}
