PDA

Ver la Versión Completa : [ RECOPILACION ] Funciones Java en Tasker


SmartPhoneLover
28/06/18, 14:08:01
https://www.imagensn.com/images/2018/06/28/9380235924.md.png


Hola Tasker@s!
Abro este hilo con el fin de recolectar todos aquellos grupos de acciones basadas única y puramente en funciones java.

Todos sabemos el gran potencial que tiene y nos ofrece Tasker, aún haciendo uso de sus acciones "preestablecidas". Pero... ¿y si llegásemos a darle uso a la acción 'Funciones Java' en nuestras tareas?

A continuación los recopilatorios... ;-)

· Adaptador (bluetooth) -> Consultar Estado (https://www.htcmania.com/showpost.php?p=29013844&postcount=2) | Enceder/Apagar (https://www.htcmania.com/showpost.php?p=29013888&postcount=3)
· Ejecutar Comandos Consola (shell) -> Go! (https://www.htcmania.com/showpost.php?p=29014111&postcount=4)
· Consultar Estado LockScreen (sistema) -> Go! (https://www.htcmania.com/showpost.php?p=29014230&postcount=5)
· Cambiar Perfiles ROM LineageOS -> Go! (https://www.htcmania.com/showpost.php?p=29014416&postcount=6)
· Consultar/Modificar Android Settings (Global, Secure, System) -> Go! (https://www.htcmania.com/showpost.php?p=29015283&postcount=7)

SmartPhoneLover
28/06/18, 14:18:00
Aquí tienen un ejemplo para iniciar el hilo:

A1: Java Function [ Return:temp Class Or Object:BluetoothAdapter Function:getDefaultAdapter
{BluetoothAdapter} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:temp Function:isEnabled
{boolean} () Param: Param: Param: Param: Param: Param: Param: ]
A3: Flash [ Text:%temp Long:Off ]El código de arriba permite conocer el estado del BT. Es decir, si esta encendido o apagado. Los posibles valores son: false/true (apagado/encendido).

SmartPhoneLover
28/06/18, 14:23:37
Continuando con las acciones anterior de consultado de estado, a continuación incluyo las correspondientes a encender y apagar el bluetooth:

-> ACTIVAR...
A1: Java Function [ Return:temp Class Or Object:BluetoothAdapter Function:getDefaultAdapter
{BluetoothAdapter} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return: Class Or Object:temp Function:enable
{boolean} () Param: Param: Param: Param: Param: Param: Param: ]-> DESACTIVAR...
A1: Java Function [ Return:temp Class Or Object:BluetoothAdapter Function:getDefaultAdapter
{BluetoothAdapter} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return: Class Or Object:temp Function:disable
{boolean} () Param: Param: Param: Param: Param: Param: Param: ]

SmartPhoneLover
28/06/18, 14:52:11
Con esto podreis ejecutar comandos de consola, como si lo hiciesemos usando la acción '+ > Code > Run Shell' en Tasker, o usando cualquier otra app de terceros, como Terminal (https://play.google.com/store/apps/details?id=jackpal.androidterm) o Termux (https://play.google.com/store/apps/details?id=com.termux).

-> Ejecutar comandos normales...
A1: Java Function [ Return:temp Class Or Object:Runtime Function:getRuntime
{Runtime} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return: Class Or Object:temp Function:exec
{Process} (String) Param:CMD Param: Param: Param: Param: Param: Param: ]-> Ejecutar comandos que requieren acceso root...
A1: Java Function [ Return:temp Class Or Object:Runtime Function:getRuntime
{Runtime} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return: Class Or Object:temp Function:exec
{Process} (String) Param:su -c CMD Param: Param: Param: Param: Param: Param: ]Notas:
- Sustituir 'CMD' de la A2, en el primer parámetro, con el comando + sus posibles argumentos a usar.
- La ejecución de comandos de consola mediante JF no implica una mejora en la velocidad de ejecución de éstos.

SmartPhoneLover
28/06/18, 15:06:57
Si queremos consultar el estado actual de nuestro bloqueo de pantalla (KeyGuard)...

A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getSystemService
{KeyguardManager} (String) Param:keyguard Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:temp Function:inKeyguardRestrictedInputMode
{boolean} () Param: Param: Param: Param: Param: Param: Param: ]
A3: Flash [ Text:%temp Long:Off ]Notas:
- Los posibles valores son: false/true (desactivado/activado).
- Hay que agregar manualmente el objeto al que hace referencia en la A1: 'KeyguardManager'.

SmartPhoneLover
28/06/18, 15:35:19
Usuarios con la custom ROM de LineageOS, teniendo la nueva característica de los perfiles, podrán pasar de una configuración a otra en segundo plano.

-> Método (1) - Si el perfil se establece dentro de la misma tarea
A1: Variable Set [ Name:%temp To:Perfil_LOS Recurse Variables:Off Do Maths:Off Append:Off ]
A2: Java Function [ Return:temp Class Or Object:cyanogenmod.app.ProfileManager Function:getInstance
{cyanogenmod.app.ProfileManager} (Context) Param:CONTEXT Param: Param: Param: Param: Param: Param: ]
A3: Java Function [ Return: Class Or Object:temp Function:setActiveProfile
{} (String) Param:%temp Param: Param: Param: Param: Param: Param: ]-> Método (2) - Si el perfil proviene de una tarea externa
A1: Java Function [ Return:temp Class Or Object:cyanogenmod.app.ProfileManager Function:getInstance
{cyanogenmod.app.ProfileManager} (Context) Param:CONTEXT Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return: Class Or Object:temp Function:setActiveProfile
{} (String) Param:%par# Param: Param: Param: Param: Param: Param: ]Notas:
- Es necesario especificar el nombre de la clase (cyanogenmod.app.ProfileManager) en la A2 y A1 respectivamente, manualmente, debido a que ésta no forma parte de las nativas de Android.
- La variable '%temp' o '%par#' deberán contener el nombre exacto que le hayamos dado a nuestro(s) perfil(es). (SENSIBLES A MAYÚSCULAS/MINÚSCULAS)

SmartPhoneLover
28/06/18, 18:11:47
Aunque la última versión de Tasker (5.x) ya permite modificar y consultar los valores de Settings (Global, System, Secure) de Android, dichas funciones nunca vienen mal ;)

-> LECTURA
- Settings (entero)
*GLOBAL*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$Global Function:getInt
{int} (ContentResolver, String) Param:temp Param:NOMBRE_SETTING Param: Param: Param: Param: Param: ]
A3: Flash [ Text:%temp Long:Off ]

*SECURE*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$Secure Function:getInt
{int} (ContentResolver, String) Param:temp Param:NOMBRE_SETTING Param: Param: Param: Param: Param: ]
A3: Flash [ Text:%temp Long:Off ]

*SYSTEM*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$System Function:getInt
{int} (ContentResolver, String) Param:temp Param:NOMBRE_SETTING Param: Param: Param: Param: Param: ]
A3: Flash [ Text:%temp Long:Off ]- Settings (texto)
*GLOBAL*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$Global Function:getString
{String} (ContentResolver, String) Param:temp Param:NOMBRE_SETTING Param: Param: Param: Param: Param: ]
A3: Flash [ Text:%temp Long:Off ]

*SECURE*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$Secure Function:getString
{String} (ContentResolver, String) Param:temp Param:NOMBRE_SETTING Param: Param: Param: Param: Param: ]
A3: Flash [ Text:%temp Long:Off ]

*SYSTEM*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$System Function:getString
{String} (ContentResolver, String) Param:temp Param:NOMBRE_SETTING Param: Param: Param: Param: Param: ]
A3: Flash [ Text:%temp Long:Off ]-> ESCRITURA
- Settings (entero)
*GLOBAL*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$Global Function:putInt
{boolean} (ContentResolver, String, int) Param:temp Param:NOMBRE_SETTING Param:VALOR_SETTING Param: Param: Param: Param: ]

*SECURE*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$Secure Function:putInt
{boolean} (ContentResolver, String, int) Param:temp Param:NOMBRE_SETTING Param:VALOR_SETTING Param: Param: Param: Param: ]

*SYSTEM*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$System Function:putInt
{boolean} (ContentResolver, String, int) Param:temp Param:NOMBRE_SETTING Param:VALOR_SETTING Param: Param: Param: Param: ]- Settings (texto)
*GLOBAL*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$Global Function:putString
{boolean} (ContentResolver, String, String) Param:temp Param:NOMBRE_SETTING Param:VALOR_SETTING Param: Param: Param: Param: ]

*SECURE*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$Secure Function:putString
{boolean} (ContentResolver, String, String) Param:temp Param:NOMBRE_SETTING Param:VALOR_SETTING Param: Param: Param: Param: ]

*SYSTEM*
A1: Java Function [ Return:temp Class Or Object:CONTEXT Function:getContentResolver
{ContentResolver} () Param: Param: Param: Param: Param: Param: Param: ]
A2: Java Function [ Return:%temp Class Or Object:android.provider.Settings$System Function:putString
{boolean} (ContentResolver, String, String) Param:temp Param:NOMBRE_SETTING Param:VALOR_SETTING Param: Param: Param: Param: ]Notas:
- Tal como funciona la nueva acción 'Custom Settings', dichas funciones tampoco requerirán acceso root al leer/escribir, siempre y cuando se le haya ortorgado a Tasker el permiso ADB.
- La velocidad de ejecución, tanto en lectura como escritura, es mucho más veloz que con comandos shell. (Tasker 5.x = ahora equiparable con su nueva acción 'Custom Settings')
- Dependiendo del tipo de valor que almacene una entrada (entero = int (número), texto = string (cadena texto)), deberemos hacer uso de un tipo de dato u otro. En caso contrario, la tarea finalizará con error.
- Los campos 'Param' que contengan 'NOMBRE_SETTING', es donde tendremos que indicar el nombre del Setting; y aquellos que sean 'VALOR_SETTING', será donde indicaremos el valor a modificar (int, string, float...)
- Estando directamente relacionado con el punto anterior, si el tipo de dato que queremos obtener o introducir es del tipo float, tendremos que usar la función 'getFloat' o 'putFloat', respectivamente. (lo mismo se aplicaría a cualquier otro tipo de dato fuera de los estándares)