Hola Androinos!!!!!
Cómo va la cosa !!!
Aquí os traigo una nueva entrada, se trata de una mini aplicación, en la cuál preguntamos al una bola mágica la pregunta que queremos que nos conteste.
Esta vez vamos a empezar por la vista que se muestra al usuario
Como ya he explicado en otras entradas podréis ver como incluir el fondo que se ha puesto.
Se ha utilizado un EditTex para introducir la pregunta que la bola, o el oráculo , queremos que nos responda.
En este caso nos vamos apoyar en la librerias TTS (Text-To-Speech), en muchos teléfonos esta librería no viene instalada por el ahorro de espacio, por lo tanto tendremos que seguir una especie de protocolo en nuestro código para utilizarla.
1-> Chequearemos si nuestro teléfono tiene instalada esta librería.
2->En caso de no tener la libreria TTS instalada tendremos que realizar una llamada a google play para que se instale.
3->Elegiremos el idioma que queremos de salida.
Ahora mostraré el código perteneciente a a la parte de la libreria
private void checkTTS()
{
Intent chekIntent = new Intent();
chekIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(chekIntent, REQUEST_CHEK_TTS);
}
Con esta función creamos un objeto Intent el cual cual es el que se utilizar para comprobar si tenemos la librería en nuestro teléfono.
//donde nos va venir el resultado de si tenemos las librerias instaladas
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// en la variable reqestcode es donde se va alojar la variable de check
if (requestCode == REQUEST_CHEK_TTS) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
texto = new TextToSpeech(this, this);
} else {
// missing data, install it
Intent installIntent = new Intent();
installIntent
.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
Con esta función lo que se hace es comprobar si el resultado de nuestro check para la librería es apto o no , la respuesta va venir en la variable requestCode y tiene que coincidir con la variable que hemos declarado, como variable global y que tiene que valer REQUEST_CHEK_TTS= 0x1000, en caso de no tener las librería en nuestro teléfono, nos indicará que tiene que instalarla. En mi caso particular, cada vez que ejecuto el programa me pide instalar la librería, le doy aceptar en el popap que me sale y sigo con mi aplicación normal.
El siguiente paso , es controlar las preguntas, como este ejercicio es un demo, sólo vamos a controlar un tipo de preguntas, las que empiecen por cuando. Cuyas respuesta con este inicio de pregunta pueden ser «dentro de poco» , «no falta mucho» o cualquier otra respuesta con calidad de tiempo que se nos ocurra.
Os muestro mi función de evento del botón
public void onClick(View v) {
// TODO Auto-generated method stub
String text = editTexto.getText().toString(); //se coge el texto de la cajetilla
String resultadoText;
String cadena = text;
String delimitadores= «[ ]»;
String[] palabrasSeparadas = cadena.split(delimitadores);
if (palabrasSeparadas[0].equalsIgnoreCase(«cuando»))
{
resultadoText= «Dentro de poco no desesperes»;
}
else
{
resultadoText= «No tengo respuesta»;
}
int queueMode = TextToSpeech.QUEUE_ADD; //se añade el texto a la pila
HashMap<String, String> params = null;
texto.speak(resultadoText, queueMode, params); // se lee la pila
}
En este caso vamos a separar la pregunta que pongamos en el editText, separaremos las frase por espacios y comprobaremos si la primera posición del array donde se van alojando cada una de las palabras, comprobaremos si viene la palabra cuando.
Podemos tener , dos posibilidades , que venga, entonces guardaremos en la variable que se le va a pasar por la librería TTS la respuesta que se quiera que nuestro teléfono conteste.
En caso que no venga pues.. guardaremos otra frase para que se diga.
Espero que os guste. Os animo a que lo probéis.
Un saludo 🙂

