Spanish Reconocimiento de VOZ en Segundo Plano

duomix

Member
Hola comunidad! Me he aventurado a intentar hacer una app en B4A Soy nuevo en programación enfocada a Android digamos, no controlo muchos conceptos como los intents y otras particularidades. Vengo de otros lenguajes y entornos de escritorio y web, pero bueno al grano.

Estoy usando la librería SpeechRecognitionNoUI para pasar de voz texto, y la verdad es que esta librera es magistral, funciona muy bien. El problema o lo que no consigo es lanzar eso en segundo plano o con la pantalla apagada, pues mi App requiere que reconozca ordenes con la pantalla apagada.

He intentado lanzar algún ejemplo de servicios en segundo plano (como un contador) con la pantalla apagada pero también sin éxito, el contador una vez apago la pantalla a los 3 segundos deja de contar.

Alguien puede orientarme un poco? o mostrarme algún ejemplo de servicio que funcione con pantalla apagada. Desde ya muchas gracias a todo. Un cordial saludo.
 

josejad

Expert
Licensed User
Longtime User
Aquí tienes un ejemplo también de un servicio corriendo prácticamente indefinidamente:


saludos,
 

duomix

Member
Aquí tienes un ejemplo también de un servicio corriendo prácticamente indefinidamente:


saludos,
Hola muchas gracias a todos, por las respuestas. Vi ese mismo ejemplo el del Tracker del Gps y ocurre una cosa:


He copiado más o menos la estructura del servicio y en mi caso particular se sigue apagando. Eso cuando uso ServiceStartAt y le marco un tiempo por ejemplo cada 1 segundos (después de apagar la pantalla hace 3 segundos más y se para). No ocurre que si inicializo un timer en el servicio, en este caso si consigo que se ejecute de forma indefinida, pero con ServiceStartAt acaba parándose, eso es lo raro.

He llegado a una conclusión, pero puede que sea erronea, ya que no tengo mucho conocimiento al respecto. Es que si mi servicio inicia otro "servicio" del sistema, como es el GPS o apis internas del GPS que cheka la localización si funciona. Pero para una rutina creada dentro de mi propia app no lo hace... eso es lo raro.

En cambio si uso el timer imagino que hace uso de alguna api interna del reloj y si que corre de forma indefinida, es una teoría mía... Pero no sé si sea así, como digo...he intentado seguir la estructura del ejemplo creado una rutina contadora y el servicio se para igualmente.

Gracias Edgar, voy a revisar el link que me has pasado y lo estudiare a ver.

Un saludo a tod@s
 

josejad

Expert
Licensed User
Longtime User
Eso cuando uso ServiceStartAt y le marco un tiempo por ejemplo cada 1 segundos
Esto no funcionará, un servicio no puede iniciarse con tan poco tiempo, o el sistema lo detendrá. Hay que poner tiempos más largos (al menos 15 o 30 minutos).

Haz una búsqueda de "service kill" y echa un ojo a las respuestas, hay muchas casuísticas, es un tema complejo que depende también de la versión del SO, del fabricante, etc...
 

duomix

Member
Esto no funcionará, un servicio no puede iniciarse con tan poco tiempo, o el sistema lo detendrá. Hay que poner tiempos más largos (al menos 15 o 30 minutos).

Haz una búsqueda de "service kill" y echa un ojo a las respuestas, hay muchas casuísticas, es un tema complejo que depende también de la versión del SO, del fabricante, etc...
Hola Jose, gracias por la respuesta. Cual crees que ser entonces la mejor manera de mantener activo el sistema de escucha continua desde un servicio? de momento he usado un timer y he salido del paso. Pero creo que no es demasiado elegate
 

josejad

Expert
Licensed User
Longtime User
Hola duomix:

No he trabajado mucho con servicios, pero viendo el ejemplo de MyLocation, entiendo que deberías pasar toda la parte de reconocimiento del audio al servicio (en el caso de ejemplo al servicio tracker), y desde el botón para reproducir, hagas una llamada a tu servicio, por ejemplo: StartService(Tracker)

En teoría el servicio debería seguir ejecutándose incluso cuando pulsas el botón home. Eso sí, si no me equivoco, habrá siempre una notificación indicando que el servicio está en ejecución.

saludos,
 

TILogistic

Expert
Licensed User
Longtime User
Si utili
Hola duomix:

No he trabajado mucho con servicios, pero viendo el ejemplo de MyLocation, entiendo que deberías pasar toda la parte de reconocimiento del audio al servicio (en el caso de ejemplo al servicio tracker), y desde el botón para reproducir, hagas una llamada a tu servicio, por ejemplo: StartService(Tracker)

En teoría el servicio debería seguir ejecutándose incluso cuando pulsas el botón home. Eso sí, si no me equivoco, habrá siempre una notificación indicando que el servicio está en ejecución.

saludos,

Use el nuevo método de desarrollo, me ha solucionado los problemas con los servicios en segundo plano:

 

duomix

Member
Si utili


Use el nuevo método de desarrollo, me ha solucionado los problemas con los servicios en segundo plano:

Gracias Oparra, le echaré un vistazo. Gracias por la respuesta.
 
Top