Używanie logiki OR w kontekstach dla Taskera


23

Powiedzmy, że chcę utworzyć kontekst, w którym SSID połączenia Wi-Fi to „ABC” lub „XYZ”.

Widzę, gdzie jestem w stanie stworzyć 2 konteksty, ale wydaje się to wymuszać logikę ORAZ między nimi, więc aby słowa były w pobliżu zarówno „ABC”, jak i „XYZ”.

Jak sprawić, by kontekst był jednym z nich, a nie jednym i drugim?

Odpowiedzi:



20

A może możesz użyć warunków „Odwróconych”, aby wykonać odwrotne zadanie ?, np

Jeśli chcesz uruchomić zadanie, gdy WiFi jest podłączone LUB gdy profil: A jest nieaktywny, możesz zamiast tego ustawić konteksty dla „WiFi jest odłączony” ORAZ „Profil: A jest aktywny” zarówno z zaznaczonym polem „odwróconym”, i ustawić zadanie, które robi odwrotnie, jeśli jest to możliwe.

Zasadniczo działa to z powodu:

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


3
Ta odpowiedź jest miła, ponieważ jest bardziej ogólna. Oznacza to, że działa z typami kontekstów innymi niż „Wifi połączone”. Na przykład chciałem utworzyć profil, aby przełączyć telefon w tryb cichy, gdy tylko zostanie zadokowany lub podłączony do mojego zegarka Pebble. Najprostszym sposobem na to było utworzenie profilu „niepołączony z Pebble i niezadokowany”, który wyłącza tryb cichy przy wchodzeniu i włącza tryb cichy przy wyjściu. Prawa DeMorgan FTW.
Laurence Gonsalves

4

Możesz uzależnić swoje działanie od zmiennej „% condition = true”, a następnie utworzyć dwa różne profile:

  • profil a: ustaw warunek na „prawda”
  • profil b: ustaw warunek na „prawda”

twój profil: jeśli zmienna „warunek” = prawda, to ... i tam jest twoje zadanie wyjścia

Ale byłoby miło, gdyby autorzy ulepszyli do tego zadania ... :)


2
Ta metoda powoduje problemy, gdy warunek może być ustawiony na true lub false zarówno przez profil aib jednocześnie. Na przykład chciałem włączyć Bluetooth podczas połączenia lub w aplikacji Kontakty. Ustawiłem% BluetoothNeeded = 1 w obu przypadkach i wyczyściłem po wyjściu dowolnego z nich. Podczas połączenia aplikacja Kontakty staje się tłem i zwykle zostaje zawieszona w celu zaoszczędzenia pamięci, co powoduje wyczyszczenie% BluetoothNeded, więc Bluetooth wyłącza się, odcinając zestaw słuchawkowy Bluetooth podczas połączenia.
Chris Dragon,

4

po prostu publikuję moje rozwiązanie tego problemu, jeśli ktoś kiedykolwiek tu przyjdzie:

utwórz profil dla każdego warunku w oświadczeniu lub wprowadź% Powody + = 1 przy wyjściu% Powody - = 1

utwórz profil z warunkiem% Przyczyny> 0 i wymaganymi zadaniami wejścia i wyjścia

Twoje zdrowie!


2

Musisz utworzyć jeden profil dla każdego kontekstu i sparować go indywidualnie z działaniem.


3
Hm, to znaczy, że tak naprawdę nie będę mieć zadania wyjścia?
Zombie

2

Aby wesprzeć mój zestaw słuchawkowy Bluetooth, chciałem włączyć bluetooth, gdy jestem w aplikacji Kontakty LUB podczas rozmowy. Mogłem to zrobić tylko podczas połączenia, ale wtedy nie mogę upewnić się, że zestaw słuchawkowy jest podłączony, zanim druga strona odbierze połączenie.

Żadne z opublikowanych już rozwiązań nie zadziałałoby. Ustawienie% BluetoothNeeded w trybie Kontakty lub w trakcie połączenia oznacza, że ​​kiedy połączenie się rozpoczyna, ustawia% BlueToothNeeded, ale gdy Kontakty stają się w tle, w trakcie połączenia, ustawia% BlueToothNeeded i Bluetooth się wyłącza. Korzystając z operacji odwrotnej, wyłącz bluetooth, kiedy NIE jest w kontaktach, a NIE w trakcie połączenia, ale włącz bluetooth, ponieważ zadanie wyjścia prawie działa, ale najwyraźniej Tasker zauważa krótki okres, gdy kontakty tracą status pierwszego planu, a połączenie jeszcze się nie rozpoczęło i włącza bluetooth poza.

Oto, co zadziałało dla mnie na podstawie tego bloga :

  1. Utwórz zadanie o nazwie Dummyz akcjąTasks > Wait > 1ms
  2. Utwórz profil wywoływany stateInCallz warunkiem State > Phone > Call > Type: Any. Połącz to z Dummyzadaniem.
  3. Utwórz profil wywoływany stateInContactsz warunkiem State > Application > Contacts. Połącz to z Dummyzadaniem.
  4. Utwórz profil wywoływany Bluetooth Neededz warunkiem State > Variable > Variable Value. Ustaw Nazwa na %PACTIVE, Op do Matchesi Wartość na *,stateInCall,*|*,stateInContacts,*. Zgodnie z dokumentami Taskera,% PACTIVE zawiera listę aktywnych profili oddzieloną przecinkami, gdzie lista również zaczyna się i kończy przecinkiem, aby ułatwić dopasowanie. Połącz ten profil z zadaniem o nazwie, Bluetooth Onktóre włącza bluetooth przy użyciu Net > Bluetooth > Set: Onakcji.
  5. Utwórz zadanie wywoływane Conditional Bluetooth Offza pomocą następujących działań:
    1. Zadanie> Poczekaj> 10 sekund
    2. Zadanie> Jeśli> %PACTIVEnie pasuje*,stateInCall,*|*,stateInContacts,*
    3. Net> Bluetooth> Ustaw: Wył
    4. Zadanie> Zakończ jeśli
  6. Naciśnij i Bluetooth Neededprzytrzymaj Profil, a następnie wybierz Properties. Odznacz Restore Settings.
  7. Naciśnij szybko Bluetooth NeededProfil, aż Bluetooth OnZadanie pojawi się pod nim, w prawej kolumnie. Naciśnij długo Bluetooth Oni wybierz Add Exit Task, a następnie wybierz Conditional Bluetooth Off.

Conditional Bluetooth Offodczeka 10 sekund przed podwójnym sprawdzeniem, czy ani stateInCallnie stateInContactssą prawdziwe, w którym to momencie wyłączy bluetooth. W przeciwnym razie, nie pozostawia na bluetooth i gdy obie stateInCalli stateInContactswyjście później, będzie wykonywać swoje 10 sekund poczekać i sprawdzić ponownie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.