23 votos

Uso de la lógica OR en contextos para Tasker

Digamos que quiero crear un contexto en el que el SSID de una conexión WiFi sea 'ABC' o 'XYZ'.

Puedo ver donde soy capaz de crear 2 contextos, pero parece aplicar la lógica AND entre los dos, por lo que en las palabras de orden debo estar en la proximidad de ambos 'ABC' y 'XYZ'.

¿Cómo hacer que el contexto sea uno de los dos, y no ambos?

21voto

Stoic Puntos 201

O probablemente puede utilizar las condiciones "Invertidas" para hacer una tarea opuesta , por ejemplo

Si desea ejecutar una tarea cuando el WiFi está conectado O cuando el perfil:A está inactivo, puede configurar contextos para "WiFi está desconectado" Y "Perfil: A está activo", ambos con la casilla "invertida" seleccionada, y configurar una tarea que haga lo contrario, si es posible.

Esto funciona básicamente por:

(A OR B) = NOT((NOT A) AND (NOT B))

4 votos

Esta respuesta es agradable porque es más general. Es decir, funciona con otros tipos de contexto que no sean "Wifi Conectado". Por ejemplo, quería crear un perfil para poner mi teléfono en modo silencioso siempre que esté acoplado o conectado a mi reloj Pebble. La forma más sencilla de hacerlo era crear un perfil "no conectado al Pebble y no acoplado" que desactivara el modo silencioso al entrar y lo activara al salir. Leyes de DeMorgan FTW.

12voto

Dmitry Selitskiy Puntos 280

Especifica el SSID en el contexto de WiFi Connected para ser ABC/XYZ Esto activará el contexto si se conecta a ABC o XYZ,

Referencia: http://tasker.dinglisch.net/userguide/en/matching.html

2 votos

Resuelve este problema en particular, pero no lo que la pregunta realmente pedía

4voto

Chrissss Puntos 41

Puedes hacer que tu acción dependa de una variable "%condition=true" y luego hacer dos perfiles diferentes:

  • perfil a: establecer la condición en "true"
  • perfil b: establecer la condición en "true"

su perfil: si la variable "condición"=true entonces ... y ahí va su tarea de salida

Pero sería bueno que los autores mejoraran tasker para eso... :)

3 votos

Este método causa problemas cuando la condición puede ser establecida como verdadera o falsa por ambos perfiles a y b al mismo tiempo. Por ejemplo, quería encender el bluetooth cuando estaba en una llamada o en la aplicación Contactos. Pongo %BluetoothNeed=1 en cualquiera de los dos casos y lo borro al salir de cualquiera de ellos. Mientras estoy en una llamada, la aplicación Contactos pasa a segundo plano y normalmente se suspende para ahorrar memoria, lo que borra %BluetoothNeeded para que el bluetooth se apague, cortando mis auriculares bluetooth durante la llamada.

2voto

terry1769 Puntos 687

Tendrá que hacer un único perfil para cada contexto y emparejarlo con la acción individualmente.

3 votos

Hm, ¿esto significa que realmente no podré tener una tarea de salida?

2voto

Chris Dragon Puntos 111

Para dar soporte a mis auriculares bluetooth, mi deseo era activar el bluetooth cuando estoy en la aplicación de Contactos O en una llamada. Podría hacerlo solo mientras estoy en una llamada, pero entonces no puedo asegurarme de que mis auriculares estén conectados antes de que la otra parte descuelgue.

Ninguna de las soluciones ya publicadas funcionaría. Activar %BluetoothNeeded cuando se está en Contactos o en llamada significa que cuando se inicia una llamada, se activa %BlueToothNeeded pero luego, cuando Contactos pasa a segundo plano al estar en llamada, se desactiva %BlueToothNeeded y el bluetooth se apaga. Usando la operación inversa, apagar el bluetooth cuando NO está en Contactos Y NO está en llamada pero encender el bluetooth como tarea de salida casi funciona, pero aparentemente Tasker nota el breve período en que Contactos pierde el estado de primer plano y la llamada no ha comenzado todavía y apaga el bluetooth.

Esto es lo que ha funcionado para mí, basado en este blog :

  1. Cree una tarea llamada Dummy con una acción de Tasks > Wait > 1ms
  2. Cree un perfil llamado stateInCall con una condición de State > Phone > Call > Type: Any . Vincularlo a la Dummy tarea.
  3. Cree un perfil llamado stateInContacts con una condición de State > Application > Contacts . Vincularlo con el Dummy tarea.
  4. Cree un perfil llamado Bluetooth Needed con una condición de State > Variable > Variable Value . Establecer el nombre como %PACTIVE , Op to Matches y Valor a *,stateInCall,*|*,stateInContacts,* . Según los documentos de Tasker, %PACTIVE contiene una lista separada por comas de los Perfiles activos en la que la lista también comienza y termina con una coma para facilitar la comparación. Vincule este perfil a una tarea llamada Bluetooth On que enciende el bluetooth usando el Net > Bluetooth > Set: On Acción.
  5. Cree una tarea llamada Conditional Bluetooth Off con las siguientes acciones:
    1. Tarea > Esperar > 10 segundos
    2. Tarea > Si > %PACTIVE no coincide con *,stateInCall,*|*,stateInContacts,*
    3. Net > Bluetooth > Configurar: Desactivado
    4. Tarea > End If
  6. Pulsación larga en el Bluetooth Needed Perfil y, a continuación, seleccione Properties . Desmarque Restore Settings .
  7. Pulse rápidamente el botón Bluetooth Needed Perfil hasta el Bluetooth On La tarea aparece debajo, en la columna de la derecha. Pulsación larga Bluetooth On y elija Add Exit Task y, a continuación, elija Conditional Bluetooth Off .

Conditional Bluetooth Off esperará 10 segundos antes de volver a comprobar que ninguno de los dos stateInCall ni stateInContacts son verdaderos, en ese momento se apagará el bluetooth. De lo contrario, deja el bluetooth encendido y cuando ambos stateInCall y stateInContacts salir más tarde, hará su espera de 10 segundos y comprobará de nuevo.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X