(Voy a obviar la creación de un proyecto en android y la explicación de los ficheros que conciernen a ellos porque esta entrada trata de gestos, en posteriores entrada explicares como se hace un proyecto android de cero)
Lo primero que hay que hacer para implementar un programa que utilice gestos en android, es crearlos, ¿como se crean? Pues facilmente con la aplicación Gestures Builder que viene en las API Demos de android de cada versión desde la 1.6 .
Lo que yo hice fue crearme un proyecto nuevo de android importandome las API Demos:
Eligiendo el proyecto mencionado anteriormente, luego lo compile y lo arranque en mi movil android. Este programa te permite definir tus gestos para finalmente guardarlos en un fichero dentro de la tarjeta SDCard , lo podreis encontrar aqui
/sdcard/gestures
. Una vez hecho esto os tendreis que llevar este ficherito al proyecto donde querais reconocer los gestos y ponerlo en la carpeta
/res/raw/gestures (posiblemente bajo de res no tendreis creada la carpeta raw, la creas como una carpeta normal con eclipse y ya esta).
El siguiente paso es iros a vuestro fichero XML de vista (en mi caso se llama main.xml alojado en /res/layout/main ) y le añadiis lo siguiente:
<android.gesture.GestureOverlayView
android:id="@+id/gestures" android:layout_width="fill_parent"
android:layout_height="0dip" android:layout_weight="1.0" />
Esto se trata de una vista que utiliza android especificamente para el tema de los gestos, por eso hay que especificar el path de la librería
android.gesture.GestureOverlayView ya que no corresponde con ninguna clase estandard de android.
Una vez modificado el fichero main.xml , nos vamos a la clase GesturesDemoActivity (vamos la clase que implementa la actividad principal que le hayamos definido en nuestro fichero manifest ) . Para empezar tendremos que añadir en el metodo onCreate el siguiente codigo:
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myGesturesLibrary = GestureLibraries.fromRawResource(this,
R.raw.gestures);
if (!myGesturesLibrary.load()) {
finish();
}
// It adds the gesture area to register the gestures of the user
GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
gestures.addOnGesturePerformedListener(this);
Elementos a destacar en este codigo, tendremos que definirnos una variable dentro de la clase que se llame GestureLibrary myGesturesLibrary; que sera donde carguemos todos los gestos que nos hayamos definido con el programa GesturesBuilder.
Lo siguiente que hacemos es mediante el metodo load() cargamos los gestos, si no nos salimos del programa ya que de otra forma nos lanzara excepciones la demo.
La ultima parte del metodo onCreate, registra un
GesturePerformedListener
en nuestra GestureOverlayView para que podamos reaccionar a los eventos que ocurran en la pantalla. Cabe aclarar que el listener lo vamos a definir nosotros dentro de la clase GesturesDemoActivity por lo tanto hay que añadir en la cabecera lo siguiente implements OnGesturePerformedListener, de este modo nos podremos definir el siguiente metodo:
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
ArrayList<Prediction> predictions = myGesturesLibrary
.recognize(gesture);
// We want at least one prediction
if (predictions.size() > 0) {
Prediction prediction = predictions.get(0);
// We want at least some confidence in the result
if (prediction.score > 1.0) {
// Show the spell
Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT)
.show();
}
}
}
A este metodo se entrara cuando se detecte un gesto en la
GestureOverlayView y sera el momento de utilizar la libreria de gestos que hemos introducido en nuestro proyecto para llamar al metodo
.recognize(gesture) que apartir del gesto que recibe como parametro realiza una serie de predicciones o predictions que guarda en una ArrayList .
Una vez tenemos la lista de predicciones podemos recorrerla y ver cual es la predicción que ha obtenido mayor score, en este caso mostramos solamente predicciones que tengan un score superior a 1.0 (por debajo son predicciones malas que no coincidirian con el gesto hecho).
Y finalmente lo que se ha hehco es mostrar el nombre de la predicción, que es el mismo nombre que nos hemos guardado con el programita Gestures Builder
Bueno agradeceros a los que hayais leido o a los que hayais entrado a ver esta entrada y si teneis alguna duda o necesitais alguna aclaración, por favor no dudeis en pedirla.
Muchas gracias y buenos dias
No hay comentarios:
Publicar un comentario