Tasker Para hablar de todo lo relacionado con la aplicación tasker


 
Herramientas
  #1  
Viejo 25/09/16, 19:09:27
Avatar de SmartPhoneLover
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
Mensajes: 542
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar
Mencionado: 4 comentarios
Tagged: 1 hilos
interrogacion Tarea para consultar eventos de calendario (no http)

Aquí os traigo una tarea de un usuario de XDA, la cual sirve para consultar eventos de calendario.
Quizas tenga elementos o partes que pueden no hacernos falta, por lo que la comparto para que la veamos y estudiemos como podemos mejorarla o adaptarla.

Código:
A1: Convertir Variable [ Nombre:%DATE Función:Fecha Hora a Segundos Almacenar Resultado en:%date ]
<GET TIME SINCE JAN 1. 1970 THROUGH 6AM TODAY>
A2: Establecer variable [ Nombre:%schedstart A:%date + (60*60*6) Calcular:Encendido Añadir:Apagado ] 
<GET TIME SINCE JAN 1. 1970 THROUGH MIDNIGHT TODAY>
A3: Establecer variable [ Nombre:%schedend A:%date + (60*60*24) Calcular:Encendido Añadir:Apagado ] 
<TEST NEXT EVENT>
A4: Probar App [ Tipo:Título Calendario Datos:%schedstart Almacenar Resultado en:%event ] 
<DETERMINE WHICH CALENDAR I'M TESTING>
A5: Probar App [ Tipo:Calendario Calendario Datos:%schedstart Almacenar Resultado en:%calendar ] 
<EVENT TITLE SHOULD NOT MATCH PREVIOUS CHECK AND CALENDAR SHOULD BE MY MAIN CALENDAR>
A6: Si (if) [ %event(#) nig 0 & %event1 !~ %doubleevent & %calendar1 ~ *Phone* ]
<RETURN DATE OF EVENT THAT I FOUND IN CALENDAR>
A7: Convertir Variable [ Nombre:%schedstart Función:Segundos a Fecha Hora larga Almacenar Resultado en:%time ] 
A8: Separar variable [ Nombre:%time Separador:2016 Eliminar base:Apagado ] 
<PUSH CALENDAR EVENT TITLE AND TIME TO END OF ARBITRARILY LONG ARRAY>
A9: Array Push [ Nombre:%calevents Posición:999 Valor:%event1, at %time2 Rellenar Espacios:Apagado ] 
<SAVE EVENT TITLE SO I DON'T MATCH IT AGAIN>
A10: Establecer variable [ Nombre:%doubleevent A:%event1 Calcular:Apagado Añadir:Apagado ] 
A11: Fin si (End if) 
<ADD 15 MINUTES TO NEXT CHECK>
A12: Sumar a variable [ Nombre:%schedstart Valor:900 Módulo (wrap around):0 ] 
<LOOP BACK AND TEST NEXT EVENT IF WITHIN SAME DAY STILL>
A13: Ir a acción [ Tipo:Etiqueta Acción Número:4 Etiqueta:TEST NEXT EVENT ] Si (if) [ %schedstart < %schedend ]
A14: Decir [ Texto:You have no events today. Motor: Voz:com.ivona.tts:eng-USA Stream:3 Tono:5 Velocidad:4 Respetar Foco Audio:Encendido Red:Encendido Continuar tarea inmediatamente:Apagado ] Si (if) [ %calevents(#) ig 0 ]
A15: Decir [ Texto:You have one event today. Motor: Voz:com.ivona.tts:eng-USA Stream:3 Tono:5 Velocidad:4 Respetar Foco Audio:Encendido Red:Encendido Continuar tarea inmediatamente:Apagado ] Si (if) [ %calevents(#) ig 1 ]
A16: Decir [ Texto:You have %calevents(#) events today. Motor: Voz:com.ivona.tts:eng-USA Stream:3 Tono:5 Velocidad:4 Respetar Foco Audio:Encendido Red:Encendido Continuar tarea inmediatamente:Apagado ] Si (if) [ %calevents(#) > 1 ]
A17: For [ Variable:%eventtosay Ítems:%calevents(:) ] 
A18: Decir [ Texto:%eventtosay Motor: Voz:com.google.android.tts:eng-usa Stream:3 Tono:5 Velocidad:4 Respetar Foco Audio:Encendido Red:Encendido Continuar tarea inmediatamente:Apagado ] 
A19: End For 
A20: Flash [ Texto:%CALS Largo:Encendido ]
------------------------------------------------------------------------------

Fuente: http://forum.xda-developers.com/u/ta...s-day-t3332783

Última edición por SmartPhoneLover Día 25/09/16 a las 19:11:53
Responder Con Cita
Los siguientes 3 usuarios han agradecido a SmartPhoneLover su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]


  #2  
Viejo 25/09/16, 19:22:36
Avatar de SmartPhoneLover
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
Mensajes: 542
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar
Mencionado: 4 comentarios
Tagged: 1 hilos
He agregado el "no http" en el título, en principio porque no sería para consultar el calendario (ONLINE=xml), sino el local.
Responder Con Cita
  #3  
Viejo 26/09/16, 15:54:17
Avatar de danko9696
danko9696 danko9696 no está en línea
Usuario muy activo
Mensajes: 2,371
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
Mencionado: 34 comentarios
Tagged: 1 hilos
Otra forma sería usar sqlite para acceder a la base de datos del calendario, lo que te permitiría mucho más control.
Responder Con Cita
  #4  
Viejo 26/09/16, 16:41:02
Avatar de SmartPhoneLover
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
Mensajes: 542
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar
Mencionado: 4 comentarios
Tagged: 1 hilos
Podrías describir el código a utilizar?
Responder Con Cita
  #5  
Viejo 26/09/16, 17:07:05
Avatar de danko9696
danko9696 danko9696 no está en línea
Usuario muy activo
Mensajes: 2,371
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
Mencionado: 34 comentarios
Tagged: 1 hilos
No hay un código concreto ya que depende de cada caso, sobre todo con las bases de datos de apps nativas. Se trataría de aprender a usar sqlite y a partir de ahí puedes extraer información de la base de datos de cualquier aplicación (siendo root, claro), para lo cual se examinaría con sqlite debugger la estructura de la base de datos en cuestión (que puede ser de calendario, correo, contactos, rss, whatsapp, etc...) y con esa información construiríamos consultas sqlite, que testearíamos primero en el mismo sqlite debugger y una vez visto que funcionan como queremos las trasladaríamos a Tasker.

O sea, hacerlo con sqlite te llevaría bastante mas tiempo (empleado en aprenderlo, después ya no) pero te permitiría mucho más control y te serviría para muchas más cosas.
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 26/09/16, 21:50:31
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 504
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
Hola @SmartPhoneLover,

Hace tiempo me hice una tarea a partir de una consulta a las BD de mi cuenta Google para que me leyera cada dia los eventos del calendario. El código de la consulta lo saqué del foro pero no he podido encontrar de donde… creo que lo posteó en un hilo maid450, pero no puedo asegurarlo.

La consulta se hace así (copiando y pegando directamente de mi tarea) :

sqlite3 -list /data/data/com.android.providers.calendar/databases/calendar.db "SELECT Instances.begin, Events.title FROM Instances JOIN Events ON Instances.event_id = Events._id WHERE begin > %TIMEMS ORDER BY Instances.begin ASC LIMIT 5;" | awk -F "|" '{printf strftime("%a %H:%M",$1/1000)}{print " -",$2}'

Esto te devuelve en una variable los 5 próximos eventos del dia (uno por línea). Puedes ampliar el n° corrigiendo el valor que tienes después del parametro LIMIT.

Tuve que corregir la salida porqué me devolvia los días de la semana en inglés y las horas sin corregir (horarios de verano e invierno) pero seguro que también lo haras facilmente…

Enviat des del meu SM-T550 usant Tapatalk
Responder Con Cita
  #7  
Viejo 26/09/16, 22:08:41
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
Cita:
Originalmente Escrito por cace0353 Ver Mensaje
Hace tiempo me hice una tarea a partir de una consulta a las BD de mi cuenta Google para que me leyera cada dia los eventos del calendario. El código de la consulta lo saqué del foro pero no he podido encontrar de donde… creo que lo posteó en un hilo maid450, pero no puedo asegurarlo.
Creo que lo encontré.
Maid450 lo explicó en el mensaje número 11 del hilo titulado "Consultar si hay un evento en el calendario en X tiempo"
http://www.htcmania.com/showthread.php?t=802260
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 26/09/16, 22:30:55
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 504
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por Caravantes Ver Mensaje
Creo que lo encontré.
Maid450 lo explicó en el mensaje número 11 del hilo titulado "Consultar si hay un evento en el calendario en X tiempo"
http://www.htcmania.com/showthread.php?t=802260
Correcto, gracias @Caravantes. Además se ve el formato de salida del ejemplo que es con las abreviaturas de los días en inglés. No hace falta más que convertir los nombres mon, thu, wed, fri… el lunes, martes, miércoles, jueves creando dos matrices lineales con los nombres y substituyendo la abreviatura encontrada por el nombre completo en español que ocupa el mismo lugar en la segunda…

Evidentemente aquí puede incluirse la tarea que se discutía días atrás sobre la lectura a voz de las horas para redondear el trabajo (yo la tengo montada así pero en catalán)

Lo del cambio de horario verano-invierno lo hago a mano dos veces al año y no me peocupó nada…

Un saludo!

Enviat des del meu SM-T550 usant Tapatalk
Responder Con Cita
  #9  
Viejo 27/09/16, 17:08:18
Avatar de danko9696
danko9696 danko9696 no está en línea
Usuario muy activo
Mensajes: 2,371
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
Mencionado: 34 comentarios
Tagged: 1 hilos
Cita:
Originalmente Escrito por cace0353 Ver Mensaje
Correcto, gracias @Caravantes. Además se ve el formato de salida del ejemplo que es con las abreviaturas de los días en inglés. No hace falta más que convertir los nombres mon, thu, wed, fri… el lunes, martes, miércoles, jueves creando dos matrices lineales con los nombres y substituyendo la abreviatura encontrada por el nombre completo en español que ocupa el mismo lugar en la segunda…
Si fuesen decenas o cientos sí, pero siendo solo siete no hace falta crear ninguna matriz, eso se puede hacer dentro de la propia consulta con CASE WHEN...THEN...ELSE...END.
Responder Con Cita
Gracias de parte de:
  #10  
Viejo 27/09/16, 19:03:09
Avatar de cace0353
cace0353 cace0353 no está en línea
Usuario muy activo
Mensajes: 504
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Versión de ROM: Stock
Versión de Radio: Stock
Tu operador: Jazztel
Mencionado: 11 comentarios
Tagged: 0 hilos
Gracias @danko9696 por la aportación.

Como algunos somos novatos aún en Sqlite3 (al menos yo) nos movemos con consultas simples y la introducción de nuevos parámetros en la consulta ni la contemplo pues me és más fácil resolver el problema desde Tasker.

Ahoro que me brindas la oportunidad quiero aprovechar para mejorar un poco mi nivel y mis programas.

Entiendo que tu sugerencia: CASE mon THEN lunes ELSE thu THEN martes...END iria despues del LIMIT 5 y antes antes del formateo del resultado, antes del "awk" ¿és correcto? ¿Cuál seria la sintaxis adecuada para que cambiara el resultado devuelto en la variable de salida?

Saludos
Responder Con Cita
  #11  
Viejo 27/09/16, 19:31:07
Avatar de danko9696
danko9696 danko9696 no está en línea
Usuario muy activo
Mensajes: 2,371
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
Mencionado: 34 comentarios
Tagged: 1 hilos
Se trata como cualquier otro campo, en plan SELECT campo1, CASE...WHEN...THEN..., campo3, CASE...WHEN...THEN... AS campo4, campo5 FROM ... WHERE ...

Ante la duda sobre la sintaxis junto con ejemplos:
http://lmgtfy.com/?q=sqlite+example+case+when+then
Responder Con Cita
Los siguientes 3 usuarios han agradecido a danko9696 su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Otro software para Android > Tasker


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 16:30:54 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007