Ver Mensaje Individual
  #4  
Viejo 26/04/13, 02:52:44
Avatar de Caravantes
Caravantes Caravantes no está en línea
Usuario muy activo
Mensajes: 2,200
Compra y venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Versión de ROM: Android 8
Tu operador: Lowi
Mencionado: 59 comentarios
Tagged: 4 hilos
Malkair, eso me parece un planteamiento muy interesante y bien desarrollado.
- Bluetooth: Encendido SI %CHATI ~ activar blutu*/encender blutu*
- Bluetooth: Apagado SI %CHATI ~ desactivar blutu*/apagar blutu*

Te lanzo una idea que complica un poco el esquema pero creo que le da un poco más de robustez. Cada una de esas opciones debería ir seguida de una acción DETENER TAREA:

- Si SI %CHATI ~ activar blutu*/encender blutu*
-- Encender Bluetoot
-- Detener tarea
- Fin si
- Si SI %CHATI ~ desactivar blutu*/apagar blutu*
-- Apagar Bluetoot
-- Detener tarea
- Fin si
etc

Otra posibilidad que me parece mejor todavía sería la siguiente
- Ir a etiqueta EncenderBlue SI %CHATI ~ activar blutu*/encender blutu*
- Ir a etiqueta ApagarBlue SI %CHATI ~ desactivar blutu*/apagar blutu*
etc.
De esta forma divides la tarea en varias partes. En esa primera parte chequeas lo que ha captado la voz y se hace un salto a la "subtarea" o rutina correspondiente. Luego habría una parte para cada subtarea o rutina, al estilo siguiente:
-Etiqueta EncenderBlue
-- Encender Bluetoot
-- Detener tarea
-Etiqueta ApagarBlue
-- Apagar Bluetoot
-- Detener tarea
-Etiqueta OtraCosa
etc
Así, todas estas rutinas reciben el mismo tratamiento y tienen el mismo esquema, independientemente de que se completen con una sola acción (Encender Bluetoot) o necesiten varias acciones (establecer alarma). De esta forma creo que te será más fácil añadir nuevas opciones o hacer tareas de mantenimiento a las opciones que ya tienes.
Me gustaría poder ordenar algo como "Establece una alarma en 10 minutos" o "Fija una alarma en 2 horas". ¿Alguna idea?
Yo había pensado lo mismo que ha dicho mlesir: partiendo de la hora actual (%TIME), es posible sumar x minutos/horas. Hacer el cálculo no es demasiado complejo pero va a requerir un puñado de acciones porque hay que considerar la posibilidad de que la suma rebase el minuto 59 o la hora 23.
Por supuesto, también se puede llamar directamente a un contacto, lanzando una tarea "Llamar":
- Establecer variable %CVALLAM a %CHATI
- Separar variable %CVALLAM ;(se separa por espacios)
- [Aquí tengo una duda: Puedo separar variables para despreciar lo que digo antes del nombre (por ejemplo: llamar, llamar a, llamar al, llamar a la), pero se hace complicado; ¿hay alguna forma de que poder saber cuál es la última variable separada? Lo digo porque si he dicho "llamar Fulanito", el nombre estará en %CVALLAM2; si he dicho "llamar a Fulanito", el nombre estará en %CVALLAM3; y si he dicho "llamar a la pescadería", el nombre estará en %CVALLAM4.

Creo que hay una solución bastante aceptable. Hace varias semanas Mlesir explicó que una buena forma de detectar una variable vacía es chequearla con respecto a "%*" (sin las comillas). Por tanto, creo que el problema se resuelve con unas cuantas acciones:
- Establecer variable %contacto a %CVALLAM5
- Establecer variable %contacto a %CVALLAM4 si %CVALLAM5 ~ %*
- Establecer variable %contacto a %CVALLAM3 si %CVALLAM4 ~ %*
- Establecer variable %contacto a %CVALLAM2 si %CVALLAM3 ~ %*
Tras esa secuencia ya tienes cazado al contacto destinatario de la llamada.
El problema es que habrá contactos que tengan un nombre compuesto de dos o más palabras, yo al menos sí los tengo. Por ese motivo yo lo haría al revés, diciendo siempre LLAMAR A y luego el nombre del contacto
- Establecer variable %contacto a %CVALLAM3
- Establecer variable %contacto a %contacto %CVALLAM4 si %CVALLAM4 !~ %*
- Establecer variable %contacto a %contacto %CVALLAM5 si %CVALLAM5 !~ %*
Con esas tres líneas tienes bastante para contactos de una, dos o tres palabras.

Por cierto, te sugiero que dejes de usar las mayúsculas sistemáticamente para los nombres de las variables. Si esas variables solo van a ser usadas en la tarea es preferible que sean variables locales, con todas sus letras en minúsculas. Tiene varias ventajas: que no necesitas reiniciarlas al principio ni vaciarlas al final; que no pueden arrastrar "basura" de una ejecución anterior (de esa misma tarea o de otra tarea distinta que use el mismo nombre de variable); que si necesitas seleccionar una de esas variables del listado de variables las encuentras rápidamente (en muchas acciones se muestra a la derecha una icono de una etiqueta que accede al listado de variables, y las locales siempre están las primeras, lo cual es una comodidad; lo dijo el gran Danko hace meses).
Responder Con Cita