Verwenden der ODER-Logik in Kontexten für Tasker


23

Angenommen, ich möchte einen Kontext erstellen, in dem die SSID einer WiFi-Verbindung entweder "ABC" oder "XYZ" ist.

Ich kann sehen, wo ich in der Lage bin, zwei Kontexte zu erstellen, aber es scheint UND-Logik zwischen den beiden zu erzwingen, also muss ich mich in der Reihenfolge der Wörter in der Nähe von 'ABC' und 'XYZ' befinden.

Wie kann man den Kontext so gestalten, dass er einer ist, nicht beide?

Antworten:



20

Oder können Sie wahrscheinlich "Umgekehrte" Bedingungen verwenden, um eine entgegengesetzte Aufgabe zu erledigen ?, z

Wenn Sie eine Aufgabe ausführen möchten, während eine WLAN-Verbindung besteht, oder wenn das Profil: A inaktiv ist, können Sie stattdessen Kontexte für "WLAN ist nicht verbunden" UND "Profil: A ist aktiv" einrichten, und zwar sowohl mit aktiviertem Kontrollkästchen "Invertiert" als auch mit eingerichtetem a Aufgabe, die das Gegenteil tut, wenn das möglich ist.

Dies funktioniert im Wesentlichen aufgrund von:

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


3
Diese Antwort ist schön, weil es allgemeiner ist. Das heißt, es funktioniert mit anderen Kontexttypen als "Wifi Connected". Ich wollte zum Beispiel ein Profil erstellen, um mein Telefon immer dann in den lautlosen Modus zu versetzen, wenn es angedockt oder mit meiner Pebble-Uhr verbunden ist. Der einfachste Weg, dies zu tun, bestand darin, ein Profil "Nicht mit Pebble verbunden und nicht angedockt" zu erstellen, das den unbeaufsichtigten Modus bei der Eingabe und den unbeaufsichtigten Modus beim Beenden deaktiviert. DeMorgans Gesetze FTW.
Laurence Gonsalves

4

Sie können Ihre Aktion von der Variablen "% condition = true" abhängig machen und dann zwei verschiedene Profile erstellen:

  • Profil a: Bedingung auf "true" setzen
  • Profil b: Bedingung auf "wahr" setzen

Ihr Profil: Wenn die Variable "condition" = true ist, dann ... und los geht Ihre Exit-Aufgabe

Wäre aber nett, wenn die Autoren den Tasker dafür verbessern würden ... :)


2
Diese Methode verursacht Probleme, wenn die Bedingung von Profil a und b gleichzeitig auf true oder false gesetzt werden kann. Zum Beispiel wollte ich Bluetooth während eines Anrufs oder in der Kontakt-App aktivieren. In beiden Fällen setze ich% BluetoothNeeded = 1 und lösche, wenn einer der beiden Fälle beendet wird. Während eines Anrufs wird die Kontakte-App im Hintergrund angezeigt und in der Regel angehalten, um Speicherplatz zu sparen. Dadurch wird% BluetoothNeeded gelöscht, sodass Bluetooth ausgeschaltet wird, und mein Bluetooth-Headset wird während des Anrufs abgeschnitten.
Chris Dragon

4

Posten Sie einfach meine Lösung für dieses Problem, wenn jemals jemand hierher kommt:

Erstellen Sie ein Profil für jede Bedingung in der Anweisung oder bei Eingabe von% Reasons + = 1 beim Beenden von% Reasons - = 1

Erstellen Sie ein Profil mit der Bedingung% Gründe> 0 und den erforderlichen Eintritts- und Austrittsaufgaben

Prost!


2

Sie müssen für jeden Kontext ein einzelnes Profil erstellen und es einzeln mit der Aktion koppeln.


3
Hm, das heißt, ich werde nicht wirklich in der Lage sein, eine Exit-Aufgabe zu haben?
Zombies

2

Um mein Bluetooth-Headset zu unterstützen, war es mein Wunsch, Bluetooth einzuschalten, wenn ich in der Kontakte-App oder in einem Anruf bin. Ich kann es nur während eines Anrufs tun, kann dann aber nicht sicherstellen, dass mein Headset angeschlossen ist, bevor der andere Teilnehmer abhebt.

Keine der bereits geposteten Lösungen würde funktionieren. Wenn% BluetoothNeeded in Kontakten oder in Anrufen aktiviert ist, bedeutet dies, dass beim Starten eines Anrufs% BlueToothNeeded aktiviert ist. Wenn Kontakte als Hintergrund für Anrufe verwendet werden, wird% BlueToothNeeded deaktiviert und Bluetooth deaktiviert. Deaktivieren Sie mit der umgekehrten Funktion Bluetooth, wenn NICHT in Kontakte UND NICHT in Anruf, sondern Bluetooth aktiviert ist, da eine Beendigungsaufgabe fast funktioniert. Anscheinend bemerkt Tasker jedoch den kurzen Zeitraum, in dem Kontakte den Vordergrundstatus verlieren und der Anruf noch nicht gestartet wurde, und schaltet Bluetooth ein aus.

Also hier ist, was für mich funktioniert hat, basierend auf diesem Blog :

  1. Erstellen Sie eine Aufgabe Dummymit der AktionTasks > Wait > 1ms
  2. Erstellen Sie ein Profil stateInCallmit der Bedingung State > Phone > Call > Type: Any. Verknüpfen Sie es mit der DummyAufgabe.
  3. Erstellen Sie ein Profil stateInContactsmit der Bedingung State > Application > Contacts. Verknüpfen Sie es mit der DummyAufgabe.
  4. Erstellen Sie ein Profil Bluetooth Neededmit der Bedingung State > Variable > Variable Value. Setzen Sie Name auf %PACTIVE, Op auf Matchesund Wert auf *,stateInCall,*|*,stateInContacts,*. Gemäß den Tasker-Dokumenten enthält% PACTIVE eine durch Kommas getrennte Liste aktiver Profile, wobei die Liste auch mit einem Komma beginnt und endet, um den Abgleich zu erleichtern. Verknüpfen Sie dieses Profil mit einer aufgerufenen Aufgabe Bluetooth On, bei der Bluetooth mithilfe der Net > Bluetooth > Set: OnAktion aktiviert wird .
  5. Erstellen Sie eine Aufgabe Conditional Bluetooth Offmit den folgenden Aktionen:
    1. Task> Warten> 10 Sekunden
    2. Aufgabe> Wenn> %PACTIVEnicht passt*,stateInCall,*|*,stateInContacts,*
    3. Net> Bluetooth> Set: Aus
    4. Task> End If
  6. Lang auf das Bluetooth NeededProfil drücken und dann auswählen Properties. Deaktivieren Sie Restore Settings.
  7. Drücken Sie kurz auf das Bluetooth NeededProfil, bis die Bluetooth OnAufgabe in der rechten Spalte darunter angezeigt wird. Lang drücken Bluetooth Onund wählen Add Exit Task, dann wählen Conditional Bluetooth Off.

Conditional Bluetooth OffWartet 10 Sekunden, bevor überprüft wird, ob weder wahr stateInCallnoch stateInContactswahr ist. An diesem Punkt wird Bluetooth deaktiviert. Ansonsten lässt es Bluetooth auf und wenn beide stateInCallund stateInContactsAusfahrt später wird er seine 10 Sekunden warten und wieder tun überprüfen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.