Sử dụng logic OR trong ngữ cảnh cho Tác vụ


23

Giả sử tôi muốn tạo một bối cảnh trong đó SSID của kết nối WiFi là 'ABC' hoặc 'XYZ'.

Tôi có thể thấy nơi tôi có thể tạo 2 bối cảnh, nhưng dường như nó thực thi AND logic giữa hai bối cảnh, vì vậy theo thứ tự tôi phải ở gần cả 'ABC' và 'XYZ'.

Làm thế nào để làm cho bối cảnh là một trong hai, không phải cả hai?

Câu trả lời:



20

Hoặc có lẽ bạn có thể sử dụng các điều kiện "Đảo ngược" để thực hiện một tác vụ ngược lại?, Ví dụ:

Nếu bạn muốn chạy một tác vụ khi WiFi được kết nối HOẶC khi cấu hình: A không hoạt động, thay vào đó bạn có thể thiết lập bối cảnh cho "WiFi bị ngắt kết nối" VÀ "Hồ sơ: A được kích hoạt" cả hai với hộp kiểm "đảo ngược" được chọn và thiết lập một nhiệm vụ đó làm ngược lại, nếu điều đó là có thể.

Điều này về cơ bản hoạt động vì:

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


3
Câu trả lời này hay vì nó tổng quát hơn. Đó là, nó hoạt động với các loại ngữ cảnh khác với "Wifi Connected". Ví dụ: tôi muốn tạo một cấu hình để đặt điện thoại của mình ở chế độ im lặng bất cứ khi nào nó được gắn hoặc kết nối với đồng hồ Pebble của tôi. Cách dễ nhất để làm điều này là tạo một hồ sơ "không được kết nối với Pebble và không được neo" để tắt chế độ im lặng khi nhập và bật chế độ im lặng khi thoát. Luật pháp của DeMorgan FTW.
Laurence Gonsalves

4

Bạn có thể thực hiện hành động của mình phụ thuộc vào một biến "% condition = true" và sau đó tạo hai cấu hình khác nhau:

  • profile a: đặt điều kiện thành "true"
  • hồ sơ b: đặt điều kiện thành "đúng"

hồ sơ của bạn: nếu biến "condition" = true thì ... và có nhiệm vụ thoát của bạn

Nhưng sẽ rất tuyệt nếu các tác giả tăng cường tác vụ cho điều đó ... :)


2
Phương pháp này gây ra vấn đề khi điều kiện có thể được đặt thành đúng hoặc sai bởi cả hai cấu hình a và b cùng một lúc. Ví dụ: tôi muốn bật bluetooth khi trong cuộc gọi hoặc trong ứng dụng Danh bạ. Tôi đặt% BluetoothNeeded = 1 trong cả hai trường hợp và xóa khi cả hai trường hợp thoát. Trong khi tôi đang gọi, ứng dụng Danh bạ trở thành nền và thường bị treo để tiết kiệm bộ nhớ, giúp xóa% BluetoothNeeded để bluetooth tắt, cắt tai nghe bluetooth của tôi trong khi gọi.
Chris Dragon

4

chỉ đăng giải pháp của tôi cho vấn đề này nếu có ai từng đến đây:

tạo một hồ sơ cho từng điều kiện trong hoặc tuyên bố về nhập% Lý do + = 1 khi thoát% Lý do - = 1

tạo một hồ sơ với điều kiện% Lý do> 0 và các nhiệm vụ nhập và thoát được yêu cầu

chúc mừng


2

Bạn sẽ cần tạo một hồ sơ duy nhất cho từng bối cảnh và ghép nó với hành động riêng lẻ.


3
Hừm, điều này có nghĩa là tôi sẽ không thực sự có thể có một nhiệm vụ thoát?
Zombie

2

Để hỗ trợ tai nghe bluetooth của tôi, mong muốn của tôi là bật bluetooth khi tôi đang ở trong ứng dụng Danh bạ HOẶC trong một cuộc gọi. Tôi chỉ có thể làm điều đó trong khi gọi nhưng sau đó tôi không thể chắc chắn rằng tai nghe của mình được kết nối trước khi bên kia nhấc máy.

Không có giải pháp nào được đăng sẽ hoạt động. Đặt% BluetoothNeeded khi ở trong Danh bạ hoặc trong cuộc gọi nghĩa là khi cuộc gọi bắt đầu, nó sẽ đặt% BlueToothNeeded nhưng sau đó khi Danh bạ trở thành nền trong cuộc gọi, nó sẽ tắt% BlueToothNeeded và bluetooth tắt. Sử dụng thao tác nghịch đảo, tắt bluetooth khi KHÔNG trong Danh bạ VÀ KHÔNG trong cuộc gọi nhưng bật bluetooth khi tác vụ thoát gần như hoạt động, nhưng rõ ràng Trình quản lý thông báo khoảng thời gian ngắn khi Danh bạ mất trạng thái tiền cảnh và cuộc gọi chưa bắt đầu và bật bluetooth tắt.

Vì vậy, đây là những gì làm việc cho tôi, dựa trên blog này :

  1. Tạo một tác vụ được gọi Dummyvới một hành động củaTasks > Wait > 1ms
  2. Tạo một hồ sơ được gọi stateInCallvới một điều kiện State > Phone > Call > Type: Any. Liên kết nó với Dummynhiệm vụ.
  3. Tạo một hồ sơ được gọi stateInContactsvới một điều kiện State > Application > Contacts. Liên kết nó với Dummynhiệm vụ.
  4. Tạo một hồ sơ được gọi Bluetooth Neededvới một điều kiện State > Variable > Variable Value. Đặt Tên thành %PACTIVE, Op thành Matchesvà Giá trị thành *,stateInCall,*|*,stateInContacts,*. Theo các tài liệu của Tác vụ,% PACTIVE chứa danh sách Hồ sơ hoạt động được phân tách bằng dấu phẩy trong đó danh sách cũng bắt đầu và kết thúc bằng dấu phẩy để giúp khớp dễ dàng hơn. Liên kết Hồ sơ này với Tác vụ được gọi là Bluetooth Onbật bluetooth bằng Net > Bluetooth > Set: OnHành động.
  5. Tạo một tác vụ được gọi Conditional Bluetooth Offvới các hành động sau:
    1. Nhiệm vụ> Đợi> 10 giây
    2. Nhiệm vụ> Nếu> %PACTIVEkhông khớp*,stateInCall,*|*,stateInContacts,*
    3. Net> Bluetooth> Đặt: Tắt
    4. Nhiệm vụ> Kết thúc nếu
  6. Nhấn và giữ vào Bluetooth NeededHồ sơ sau đó chọn Properties. Bỏ chọn Restore Settings.
  7. Nhấn nhanh Bluetooth NeededHồ sơ cho đến khi Bluetooth OnNhiệm vụ xuất hiện bên dưới nó, ở cột bên phải. Nhấn Bluetooth Onvà chọn Add Exit Task, sau đó chọn Conditional Bluetooth Off.

Conditional Bluetooth Offsẽ đợi 10 giây trước khi kiểm tra lại xem có đúng stateInCallhay không stateInContacts, tại thời điểm đó nó sẽ tắt bluetooth. Nếu không, nó sẽ bật bluetooth và khi cả hai stateInCallstateInContactsthoát sau đó, nó sẽ chờ 10 giây và kiểm tra lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.