Usando lógica OR em contextos para Tasker


23

Digamos que eu queira criar um contexto em que o SSID de uma conexão WiFi seja 'ABC' ou 'XYZ'.

Eu posso ver onde eu sou capaz de criar 2 contextos, mas parece impor a lógica AND entre os dois; portanto, em ordem de palavras, devo estar próximo de 'ABC' e 'XYZ'.

Como tornar o contexto um dos dois, não os dois?

Respostas:



20

Ou provavelmente você pode usar condições "Invertidas" para executar uma tarefa oposta ?, por exemplo

Se você deseja executar uma tarefa quando o WiFi está conectado OU quando o perfil: A está inativo, você pode configurar os contextos para "O WiFi está desconectado" AND "Perfil: A está ativo" ambos com a caixa de seleção "invertida" selecionada e configurar um tarefa que faz o oposto, se isso for possível.

Isso basicamente funciona por causa de:

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


3
Esta resposta é boa porque é mais geral. Ou seja, funciona com tipos de contexto diferentes de "Wifi Connected". Por exemplo, eu queria criar um perfil para colocar meu telefone no modo silencioso sempre que estivesse acoplado ou conectado ao meu relógio Pebble. A maneira mais fácil de fazer isso era criar um perfil "não conectado ao Pebble e não encaixado" que desativa o modo silencioso ao entrar e habilita o modo silencioso ao sair. Leis de DeMorgan FTW.
Laurence Gonsalves

4

Você pode fazer sua ação depender de uma variável "% condition = true" e criar dois perfis diferentes:

  • perfil a: defina a condição como "true"
  • perfil b: defina a condição como "true"

seu perfil: se a variável "condition" = true então ... e lá vai sua tarefa de saída

Mas seria legal se os autores aprimorassem o tasker para isso ... :)


2
Esse método causa problemas quando a condição pode ser configurada como verdadeira ou falsa pelo perfil aeb ao mesmo tempo. Por exemplo, eu queria ativar o bluetooth em uma chamada ou no aplicativo de contatos. Defino% BluetoothNeeded = 1 em ambos os casos e limpo quando um dos casos termina. Enquanto estou em uma chamada, o aplicativo Contatos fica em segundo plano e geralmente fica suspenso para economizar memória, o que apaga% BluetoothNeeded para que o bluetooth seja desligado, cortando meu fone de ouvido bluetooth durante a chamada.
Chris Dragão

4

apenas postando minha solução para esse problema se alguém vier aqui:

crie um perfil para cada condição na instrução ou ao inserir% Motivos + = 1 na saída% Motivos - = 1

crie um perfil com a condição% Motivos> 0 e as tarefas de entrada e saída necessárias

Felicidades!


2

Você precisará criar um único perfil para cada contexto e associá-lo à ação individualmente.


3
Hum, isso significa que eu realmente não serei capaz de ter uma tarefa de saída?
Zombies

2

Para dar suporte ao meu fone de ouvido bluetooth, meu desejo era ativar o bluetooth quando estou no aplicativo de contatos OU em uma chamada. Eu poderia fazer isso apenas durante uma ligação, mas não consigo garantir que meu fone de ouvido esteja conectado antes que a outra parte atenda.

Nenhuma das soluções já postadas funcionaria. Definir% BluetoothNeeded ativado quando em Contatos ou na chamada significa que, quando uma chamada é iniciada, ele ativa% BlueToothNeeded, mas quando Contatos se torna o plano de fundo para estar em uma chamada, ele desativa% BlueToothNeeded e o Bluetooth é desligado. Usando a operação inversa, desative o Bluetooth quando NÃO está em Contatos E NÃO em chamada, mas ative o Bluetooth como uma tarefa de saída quase funciona, mas aparentemente Tasker percebe o breve período em que Contatos perde o status de primeiro plano e a chamada ainda não foi iniciada e ativa o Bluetooth. fora.

Então, aqui está o que funcionou para mim, com base neste blog :

  1. Crie uma tarefa chamada Dummycom uma ação deTasks > Wait > 1ms
  2. Crie um perfil chamado stateInCallcom uma condição de State > Phone > Call > Type: Any. Vincule-o à Dummytarefa.
  3. Crie um perfil chamado stateInContactscom uma condição de State > Application > Contacts. Vincule-o à Dummytarefa.
  4. Crie um perfil chamado Bluetooth Neededcom uma condição de State > Variable > Variable Value. Defina Nome como %PACTIVE, Op como Matchese Valor como *,stateInCall,*|*,stateInContacts,*. De acordo com os documentos da Tasker, o% PACTIVE contém uma lista separada por vírgula de perfis ativos, onde a lista também começa e termina com uma vírgula para facilitar a correspondência. Vincule esse perfil a uma tarefa chamada Bluetooth Onque ativa o bluetooth usando a Net > Bluetooth > Set: Onação.
  5. Crie uma tarefa chamada Conditional Bluetooth Offcom as seguintes ações:
    1. Tarefa> Aguarde> 10 segundos
    2. Tarefa> Se> %PACTIVEnão corresponde*,stateInCall,*|*,stateInContacts,*
    3. Rede> Bluetooth> Definir: Desativado
    4. Tarefa> Terminar se
  6. Mantenha pressionado o Bluetooth Neededperfil e escolha Properties. Desmarque Restore Settings.
  7. Pressione rapidamente o Bluetooth Neededperfil até que a Bluetooth Ontarefa seja exibida abaixo, na coluna da direita. Mantenha pressionado Bluetooth One escolha Add Exit Task, depois escolha Conditional Bluetooth Off.

Conditional Bluetooth Offesperará 10 segundos antes de verificar novamente que nem stateInCallnem stateInContactssão verdadeiras; nesse ponto, desligará o bluetooth. Caso contrário, ele deixa o bluetooth ativado e, quando ambos stateInCalle stateInContactssai mais tarde, espera 10 segundos e verifica novamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.