TTS(Text To Speech) mediante Xamarin.Android
Hola que tal hoy les traigo un ejemplo basico de dictado para Xamarin.Android muy util para darle un plus a nuestras aplicaciones.
Iniciaremos creando nuestra interfaz Layout con el siguiente codigo:
<linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <textview android:gravity="center" android:id="@+id/textView1" android:layout_height="wrap_content" android:layout_width="match_parent" android:text="TTS Demo" android:textappearance="?android:attr/textAppearanceLarge" /> <edittext android:id="@+id/Texto" android:layout_height="wrap_content" android:layout_width="match_parent" /> <button android:id="@+id/Button1" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="Magic" /> </linearlayout>Enseguida crearemos nuestro codigo que es demasiado sencillo e intuitivo:
using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; //Importaremos la librearia necesaria para el uso del TTS "Android.Speech.Tts" using Android.Speech.Tts; //Importaremos la libreria para el uso de colecciones "System.Collections.Generic" using System.Collections.Generic; namespace TTSDemo { //Implementaremos el tipo TextToSpeech.IOnInitListener para poder activar nuestro TTS al iniciar nuestra app [Activity (Label = "TTSDemo", MainLauncher = true)] public class MainActivity : Activity, TextToSpeech.IOnInitListener { //Declararemos nuestra variable del tipo TextToSpeech private TextToSpeech tts; protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); // Set our view from the "main" layout resource SetContentView (Resource.Layout.Main); //Inicializaremos nuestra variable principal que nos pide dos parametros nuestro contexto y una clase //tipo TextToSpeech.IOnInitListener la cual heredamos mediante la implementacion de la clase tts = new TextToSpeech (this, this); Button button = FindViewById<Button> (Resource.Id.Button1); EditText caja = FindViewById<EditText> (Resource.Id.Texto); button.Click += delegate { //Verificamos que nuestra variable tipo TextToSpeech sea diferente de null if (tts!=null) { //En una variable tipo string depositamos el contenido de nuestro textbox String text = caja.Text; //Verificamos que nuestra variable de texto no sea nula para evitar una excepcion if (text!=null) { //Verificamos que nuestro telefono no este usando la funcion de dictado if (!tts.IsSpeaking) { //mandamos a llamar la funcion de dictado que nos pedida tres parametros //1 Texto a dictar //2 Modo //3 Diccionario de parametros el cual ira vacio en esta ocacion tts.Speak(text, QueueMode.Flush, new DictionaryListo con unas cuantas lineas de codigo ahora nuestras apps estaran mas vivas que nunca ahora veremos nuestros resultados:()); } } } }; } //Nuestro metodo importante en el cual nos devolvera al momento de inicializar nuestro TTS public void OnInit (OperationResult status) { //Verificamos que nuestra variable haya sido inicializada correctamente if (status.Equals (OperationResult.Success)) { //Asignamos el idima a utlizar en este caso seleccionamos el idioma por default del sistema tts.SetLanguage (Java.Util.Locale.Default); //Enviamos una notificacion de que se activo nuestro TTS correctamente Toast.MakeText (this, "TTS Activado Correctamente", ToastLength.Long).Show (); } else { //Enviamos una notificacion si no se activo nuestro TTS correctamente Toast.MakeText (this, "Error al activar TTS", ToastLength.Long).Show (); } } //En nuestro metodo de destruccion paramos y apagamos el dictado protected override void OnDestroy () { if (tts!=null) { tts.Stop (); tts.Shutdown(); } base.OnDestroy (); } } }
Pueden bajar el ejemplo completo desde aqui:
https://github.com/AlejandroRuiz/Mono/tree/master/TTSDemo
Espero que les sea de utilidad sin antes ponerme a sus ordenes para cualquier comentario o duda mediante este blog o cualquiera de mis redes sociales:
Facebook: https://www.facebook.com/alexrhack
Twitter: https://twitter.com/alejandroruizva
Les dejo la documentación oficial de android acerca de esta libreria:
http://developer.android.com/reference/android/speech/tts/TextToSpeech.html
y como ya es costumbre les dejo algo de musica para que se relajen:
Comentarios
Publicar un comentario