Использование логики ИЛИ в контексте для Tasker


23

Допустим, я хочу создать контекст, в котором SSID соединения WiFi имеет вид «ABC» или «XYZ».

Я могу видеть, где я могу создать 2 контекста, но кажется, что они обеспечивают логику AND между ними, поэтому, чтобы слова порядка были в непосредственной близости от «ABC» и «XYZ».

Как сделать так, чтобы контекст был, а не оба?

Ответы:



20

Или, возможно, вы можете использовать «перевернутые» условия для выполнения противоположной задачи?

Если вы хотите запустить задачу, когда WiFi подключен ИЛИ, когда профиль: A неактивен, вы можете вместо этого установить контексты для «WiFi отключен» И «Профиль: A активен» как с установленным флажком «инвертировано», так и настроить Задача, которая делает противоположное, если это возможно.

Это в основном работает из-за:

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


3
Этот ответ хорош, потому что он более общий. То есть он работает с типами контекста, отличными от «Wifi Connected». Например, я хотел создать профиль, чтобы переводить телефон в беззвучный режим, когда он подключен к моим часам Pebble или подключен к ним. Самый простой способ сделать это - создать профиль «не подключен к Pebble и не подключен», который отключает тихий режим при входе и включает тихий режим при выходе. Законы Деморгана FTW.
Лоуренс Гонсалвес

4

Вы можете сделать свое действие зависимым от переменной "% condition = true", а затем создать два разных профиля:

  • профиль a: установить условие в "true"
  • профиль b: установить условие на «истина»

ваш профиль: если переменная "условие" = истина, то ... и там ваша задача выхода

Но было бы неплохо, если бы авторы усилили Tasker для этого ... :)


2
Этот метод вызывает проблемы, когда условие может быть установлено как истинное или ложное как для профиля a, так и для b одновременно. Например, я хотел включить Bluetooth во время разговора или в приложении «Контакты». Я установил% BluetoothNeeded = 1 в любом случае и очищаю при выходе из любого случая. Во время разговора приложение «Контакты» становится фоновым и, как правило, приостанавливается для экономии памяти, что сбрасывает% BluetoothNeeded, так что bluetooth отключается, отключая мою гарнитуру Bluetooth во время разговора.
Крис Драгон

4

просто опубликовать мое решение этой проблемы, если кто-нибудь когда-нибудь придет сюда:

создать профиль для каждого условия в операторе или при вводе% Reasons + = 1 при выходе% Reasons - = 1

создайте профиль с условием% причин> 0 и необходимыми задачами входа и выхода

ура!


2

Вам нужно будет создать отдельный профиль для каждого контекста и связать его с действием по отдельности.


3
Хм, это значит, что я не смогу выполнить задание на выход?
Зомби

2

Чтобы поддерживать мою гарнитуру Bluetooth, я хотел включить Bluetooth, когда я нахожусь в приложении «Контакты» ИЛИ во время разговора. Я мог бы сделать это только во время разговора, но тогда я не могу убедиться, что моя гарнитура подключена до того, как другой абонент ответит.

Ни одно из уже опубликованных решений не будет работать. Параметр% BluetoothNeeded включен, когда в Контактах или в вызове означает, что при запуске вызова он устанавливает% BlueToothNeeded, но затем, когда Контакты становится фоновым для вызова, он отключает% BlueToothNeeded и Bluetooth отключается. Используя обратную операцию, выключите Bluetooth, когда НЕ в Контактах И НЕ в вызове, но включите Bluetooth, так как задача выхода почти работает, но, видимо, Tasker замечает короткий период, когда Контакты теряет статус переднего плана, а вызов еще не начался и включает Bluetooth выкл.

Вот что сработало для меня, основываясь на этом блоге :

  1. Создайте задачу, вызванную DummyдействиемTasks > Wait > 1ms
  2. Создайте профиль stateInCallс условием State > Phone > Call > Type: Any. Свяжите это с Dummyзадачей.
  3. Создайте профиль stateInContactsс условием State > Application > Contacts. Свяжите это с Dummyзадачей.
  4. Создайте профиль Bluetooth Neededс условием State > Variable > Variable Value. Установите Имя в %PACTIVE, Op в Matchesи Значение в *,stateInCall,*|*,stateInContacts,*. Согласно документам Tasker,% PACTIVE содержит разделенный запятыми список активных профилей, где этот список также начинается и заканчивается запятой, чтобы упростить сопоставление. Свяжите этот профиль с задачей, Bluetooth Onкоторая включает Bluetooth с помощью Net > Bluetooth > Set: Onдействия.
  5. Создайте задачу, вызванную Conditional Bluetooth Offследующими действиями:
    1. Задача> Ожидание> 10 секунд
    2. Задача> Если> %PACTIVEне совпадает*,stateInCall,*|*,stateInContacts,*
    3. Сеть> Bluetooth> Установить: Выкл.
    4. Задача> Конец, если
  6. Длительно нажмите на Bluetooth Neededпрофиль, затем выберите Properties. Снимите флажок Restore Settings.
  7. Быстро нажимайте Bluetooth Neededпрофиль, пока Bluetooth Onзадача не появится под ним в правом столбце. Длительно нажмите Bluetooth Onи выберите Add Exit Task, затем выберите Conditional Bluetooth Off.

Conditional Bluetooth Offбудет ждать 10 секунд, прежде чем дважды проверить, что ни, stateInCallни stateInContactsистина, и в этот момент он отключит Bluetooth. В противном случае он оставляет Bluetooth включенным, а когда оба stateInCallи stateInContactsвыходят позже, он будет ждать 10 секунд и проверить еще раз.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.