Hoy vamos a ver como utilizar y captar las coordenadas de movimiento del móvil obtenidas através del sensor de movimiento llamado acelerómetro en inglés accelerometer. Las coordenadas obtenídas serán la X, Y y Z.
Las pruebas las vamos hacer con el movil en horizontal y boca arriba. En esa posición las coordenadas obtenidas són las siguientes:
Inicial: Levantamos el móvil verticalmente:
X: -0,20 X: 0,00
Y: 0,20 Y: 9,00
Z: 10,0 Z: 0,00
Incliamos el movil horizontalmente: Incliamos el movil verticalmente:
X: -9 / 9 X: 0,00
Y: 0,20 Y: -9 / 9
Z: 10,0 Z: 0,00
Log obtenido mientras movemos el móvil:
Ahora os muestro el código totalmente comentado para que entendáis fácilmente el funcionamiento, esta aplicación lo único que hace es captar el sensor y imprimir los resultados en el LogCat:
public class TestAcelerometerActivity extends Activity implements SensorEventListener{ //Declaramos el SensorManager es la clase que controla el sensor. private SensorManager sensorManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //Captamos el servicio sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE); //Lo activamos dandole las características standars. sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) , SensorManager.SENSOR_DELAY_NORMAL); } @Override //Función llamada cada vez que el sensor capta un mínimo cambio. public void onSensorChanged(SensorEvent event) { //Filtramos solo el sensor acelerómetro, //Si cambiamos el filtro podríamos obtener otros sensores //como or ejemplo tocar la pantalla. if (event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){ //Vamos imprimiendo los resultados en el Log: //Aquí irá vuestro código personal. Log.d("Coordenada X: ",event.values[0]+""); Log.d("Coordenada Y: ",event.values[1]+""); Log.d("Coordenada Z: ",event.values[2]+""); Log.d("############# ","######################"); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) {} }
Añado Link de descarga del proyecto:
Muchas gracias a todos y no olvidéis de comentar!!!
solo es el movil no mueves otro objeto...
ResponderEliminarSolo explica el sensor, ahora abría que buscar como dar las coordenadas a un objeto como por ejemplo una imagen y ir multiplicándolo por los resultados del sensor para conseguir el efecto de movimiento. Gracias!
Eliminarcomo se le puede aplicar a una imagen y que se genere el efecto de movimiento
ResponderEliminarBuen día, estoy trabajando en un proyecto que usa intensamente el acelerómetro, quisiera saber si se puede capturar con este método "un patrón de movimiento". Gracias
ResponderEliminarBuenos días!
EliminarSí que se puede ya que en este tutoríal lo que explica és la base del acelerómetro. En tu caso en vez de usar Log.d() que uso en el ejemplo tu deberías introducir hay tu código que fuera guardando movimientos para el patrón.
Muchas gracias!
Buenos días (tarde/noche). Victor, intente probar esto del acelerómetro pero me marca error en la línea "implementes SensorEventListener" ¿esto a que se debe?. Y bueno si puedes colocar un link para descargar el proyecto en eclipse también te lo agradecería.
ResponderEliminarHe añadido el proyecto en un link para descargar.
EliminarGracias por tu comentario
:'( Esque lo descargo y Nada que me da Ayudame :(
ResponderEliminarDeberías empezar por tutoriales más simples como este: http://www.tutorialeshtml5.com/2012/02/tutorial-basico-android-agregar-boton.html
Eliminarhola
ResponderEliminarncesito saber como puedo gurdar esos datos en la base de android sqlite