Tạo hàng rào

Hàng rào xác định một hoặc nhiều điều kiện theo bối cảnh mà ứng dụng của bạn có thể phản ứng. Khi trạng thái của hàng rào thay đổi, ứng dụng của bạn sẽ nhận được lệnh gọi lại.

Có 2 loại hàng rào: hàng rào nguyên thuỷ (đại diện cho tập hợp cơ bản của các tín hiệu theo bối cảnh) và hàng rào kết hợp (kết hợp nhiều hàng rào nguyên thuỷ bằng cách sử dụng toán tử boolean). Tất cả hàng rào đều là thực thể của AwarenessFence.

Tạo hàng rào nguyên thuỷ

Hàng rào nguyên thuỷ (đại diện cho tập hợp cơ bản của các tín hiệu theo bối cảnh) được xác định trong gói awareness.fence. Ví dụ sau đây cho thấy cách tạo một hàng rào đơn giản có giá trị TRUE khi hoạt động được phát hiện của người dùng là WALKING, và FALSE trong trường hợp khác:

AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);

Trong ví dụ trước, DetectedActivityFence được tạo bằng cách gọi during, Điều này có nghĩa là hàng rào ở trạng thái TRUE bất cứ khi nào người dùng WALKING.

Phản ứng với quá trình chuyển đổi

Mỗi loại hàng rào nguyên thuỷ (ngoại trừ TimeFence) cũng có thể được kích hoạt trong giây lát khi trạng thái theo bối cảnh chuyển đổi. Ví dụ: bạn có thể đặt DetectedActivityFence để kích hoạt trong giây lát khi người dùng starting hoặc stopping một hoạt động. Hàng rào chuyển đổi ở trạng thái TRUE trong vài giây trước khi chuyển lại thành FALSE.

Tạo hàng rào kết hợp

Hàng rào kết hợp kết hợp nhiều loại hàng rào nguyên thuỷ bằng cách sử dụng toán tử boolean. Ví dụ sau đây cho thấy cách tạo một hàng rào kết hợp kích hoạt khi người dùng đi bộ cắm tai nghe:

// Create the primitive fences.
AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);
AwarenessFence headphoneFence = HeadphoneFence.during(HeadphoneState.PLUGGED_IN);

// Create a combination fence to AND primitive fences.
AwarenessFence walkingWithHeadphones = AwarenessFence.and(
      walkingFence, headphoneFence
);

Cây lồng nhau của AND, ORNOT là hợp lệ, vì vậy, bạn có thể kết hợp bất kỳ hàng rào boolean nào. Ví dụ sau đây cho thấy một hàng rào được kích hoạt khi người dùng di chuyển hơn 100 mét so với vị trí hiện tại hoặc hơn một giờ đã trôi qua kể từ thời điểm hiện tại.

double currentLocationLat;  // current location latitude
double currentLocationLng;  // current location longitude
long nowMillis = System.currentTimeMillis();
long oneHourMillis = 1L * 60L * 60L * 1000L;

AwarenessFence orExample = AwarenessFence.or(
        AwarenessFence.not(LocationFence.in(
                currentLocationLat,
                currentLocationLng,
                100.0,
                100.0,
                0L)),
        TimeFence.inInterval(nowMillis + oneHourMillis, Long.MAX_VALUE));

Bước tiếp theo: Đăng ký hàng rào.