Genericos-Web-1024

Atender temporizador y realizar otra tarea simultáneamente

RetoTech_Fundación_Endesa Foro App Inventor Atender temporizador y realizar otra tarea simultáneamente

Este debate contiene 3 respuestas, tiene 2 mensajes y lo actualizó Colegio San Diego y San Vicente Fernando Sánchez Herrero hace 5 meses, 1 semana.

Viendo 4 publicaciones - del 1 al 4 (de un total de 4)
  • Autor
    Publicaciones
  • #848 Respuesta
    Colegio San Diego y San Vicente
    Fernando Sánchez Herrero

    Hola,

    En el curso de App Inventor nos enseñaron una cosa muy interesante, a crear una app con un temporizador que continuamente escuchaba los mensajes por bluetooth que recibía de la placa. Nos sirvió para programar el robot teledirigido que medía distancias.

    Para el proyecto final se nos había ocurrido que desde la placa se disparasen melodías que se ejecutaban en el móvil (las melodías se subían a la app). Como un launchpad (así me han dicho que se llama).
    Hemos estado haciendo pruebas antes de enseñárselo a los chicos para que empezaran con ello pero nos ha surgido un problema que no sé resolver. Me parece que en App Inventor la programación es en un único thread, es decir que si se dispara una melodía en en el móvil (por ejemplo si la lanza un sensor de IR en la placa) hasta que no termine de ejecutarse la fracción de esa melodía no se ejecuta el resto del código.

    Nosotros necesitaríamos dos threads, uno que estuviera continuamente atendiendo a los eventos con el temporizador y otro que ejecutase las melodías completas. Por ejemplo, si un evento dispara una secuencia ritmica no quiero que se pare, quiero que la app siga escuchando eventos y si se dispara otra melodía se superponga hasta que otro evento las detenga. No veo como hacerlo. ¿Se os ocurre alguna manera?

    A mí se me ocurre una alternativa pero me parece muy complicada, que desde la app se llame a otra app externa que reproduzca cada melodía / secuencia sonora cuando se produzca el evento y que se puedan detener con otro evento.

    Si queréis comparto los aia, no sé si servirá de algo.

    Gracias por adelantado

    Fernando

    #849 Respuesta

    Buenos días Fernando,

    Sí se pueden ejecutar dos melodías de forma simultánea sin que se detenga la primera, lo que tendrías que hacer es utilizar tantos elementos Player como melodías quieras que suenen al mismo tiempo. Mientras suenan las melodías, se seguirá atendiendo a cualquier otro tipo de evento.

    #850 Respuesta
    Colegio San Diego y San Vicente
    Fernando Sánchez Herrero

    Hola,

    Eso es exactamente lo que tengo hecho, dos elementos que reproducen cada uno una melodía. El problema que estoy teniendo es que no sé como hacer que se reproduzca cada melodía completa.

    A ver si me explico: En la app tengo dos melodías cada una con un player, cada una se dispara con un evento distinto en la placa que se lee en la app con un temporizador cada 500 ms. Imagina que la melodía dura 2 minutos y quiero que suene completa pero tengo que estar atendiendo a los eventos por si me llega la orden de detenerla o de hacer otra cosa (como que suene otra melodía). ¿Cómo hacer para que si la melodía está en marcha no se pare en el código del temporizador y se reproduzca entera? ¿Cómo hacer para que si mientras se reproduce la melodía llega la orden de pararla esté atendiendo al temporizador?

    No sé si me he explicado mejor. El aia lo tengo compartido aquí https://drive.google.com/file/d/0B3zmtOtn4DAGdG5VbUdoeUI3SGs/view?usp=sharing

    Saludos
    Fernando

    #855 Respuesta
    Colegio San Diego y San Vicente
    Fernando Sánchez Herrero

    Perdón, no estaba usando objetos de tipo Player sino de tipo Sound, lo intento con estos y ya lo comentaré

    Gracias

    Fernando

Viendo 4 publicaciones - del 1 al 4 (de un total de 4)
Respuesta a: Atender temporizador y realizar otra tarea simultáneamente
Tu información: