Curso-Android-Desarrollo-de-Aplicaciones-Móviles
Curso-Android-Desarrollo-de-Aplicaciones-Móviles
Curso-Android-Desarrollo-de-Aplicaciones-Móviles
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
CURSO ANDROID<br />
77<br />
valores anteriores <strong>de</strong> X, Y y Z tiene valores diferentes <strong>de</strong> cero. Esto <strong>de</strong>bería ejecutarse sólo la primera<br />
vez.<br />
if (prevX == 0 && prevY == 0 && prevZ == 0) {<br />
last_update = current_time;<br />
last_movement = current_time;<br />
prevX = curX;<br />
prevY = curY;<br />
prevZ = curZ;<br />
}<br />
Obtenemos la diferencia entre la última actualización y el timestamp actual, esto nos servirá no solo<br />
para ver que si existe una diferencia <strong>de</strong> tiempos en las mediciones si no también para calcular el movimiento.<br />
Para ello, tomamos la posición actual (con las 3 coor<strong>de</strong>nadas) y la restamos a la posición anterior,<br />
pue<strong>de</strong> ser que el movimiento sea en distintas direcciones por eso nos es útil el valor absoluto.<br />
long time_difference = current_time - last_update;<br />
if (time_difference > 0) {<br />
float movement = Math.abs((curX + curY + curZ) - (prevX - prevY - prevZ)) /<br />
time_difference;<br />
...<br />
}<br />
Para <strong>de</strong>cidir en que momento mostramos un aviso Toast indicando el movimiento vamos a usar como<br />
valor <strong>de</strong> frontera <strong>de</strong> movimiento mínimo 1×10^-6; este valor es arbitrario mientras mayor sea, se necesitará<br />
más movimiento y mientras menor sea más sensible será el display <strong>de</strong>l aviso.<br />
Manejamos también 2 variables para el control <strong>de</strong> tiempo, una para saber la última actualización (last_<br />
update) y otra para conocer la última vez que se registró movimiento last_movement y en esta parte <strong>de</strong>l<br />
código actualizamos su valor según sea conveniente.<br />
int limit = 1500;<br />
float min_movement = 1E-6f;<br />
if (movement > min_movement) {<br />
if (current_time - last_movement >= limit) {<br />
Toast.makeText(getApplicationContext(), “Hay movimiento <strong>de</strong> “ + movement,