Curso-Android-Desarrollo-de-Aplicaciones-Móviles
Curso-Android-Desarrollo-de-Aplicaciones-Móviles
Curso-Android-Desarrollo-de-Aplicaciones-Móviles
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
CURSO ANDROID<br />
76<br />
Agregando código<br />
La clase <strong>de</strong> la Activity principal para nuestra aplicación implementará SensorEventListener para el<br />
manejo <strong>de</strong> las actualizaciones <strong>de</strong> los sensores, en nuestro caso específico nos interesa el acelerómetro.<br />
public class Main extends Activity implements SensorEventListener<br />
Utilizaremos algunas variables <strong>de</strong> instancia para el control <strong>de</strong> los valores <strong>de</strong> los 3 ejes que mi<strong>de</strong> el acelerómetro<br />
(valor anterior y valor actual) y otras para guardar el timestamp <strong>de</strong> la última actualización y la<br />
última vez que se <strong>de</strong>tectó movimiento.<br />
private long last_update = 0, last_movement = 0;<br />
private float prevX = 0, prevY = 0, prevZ = 0;<br />
private float curX = 0, curY = 0, curZ = 0;<br />
Al implementar esta interface <strong>de</strong>bemos sobrecargar dos métodos:<br />
@Overri<strong>de</strong><br />
public void onAccuracyChanged(Sensor sensor, int accuracy) {}<br />
@Overri<strong>de</strong><br />
public void onSensorChanged(SensorEvent event) {}<br />
Vamos a trabajar sobre onSensorChanged nuestro código será un synchronized statement (más información<br />
en la documentación <strong>de</strong> Java 1 ) para evitar problemas <strong>de</strong> concurrencia al estar trabajando con<br />
los sensores.<br />
synchronized (this) {<br />
}<br />
A partir <strong>de</strong>l evento recibido como parámetro vamos a obtener el timestamp <strong>de</strong> la fecha/hora actual (se<br />
usará más a<strong>de</strong>lante) y los valores para los 3 ejes <strong>de</strong>l acelerómetro (X, Y, Z).<br />
long current_time = event.timestamp;<br />
curX = event.values[0];<br />
curY = event.values[1];<br />
curZ = event.values[2];<br />
Luego, revisamos si este código ya se ha ejecutado alguna vez, es <strong>de</strong>cir, si las variables que guardan los<br />
1 http://download.oracle.com/javase/tutorial/essential/concurrency/locksync.html