Tạo hàng rào

Hàng rào xác định một hoặc nhiều điều kiện ngữ 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 một lệnh gọi lại.

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

Tạo hàng rào cơ bản

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

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

Trong ví dụ trước, DetectedActivityFence được tạo bằng một lệnh gọi đến during, nghĩa là hàng rào ở trạng thái TRUE bất cứ khi nào người dùng ở trạng thái WALKING.

Phản ứng với các hiệu ứng chuyển cảnh

Mỗi loại hàng rào cơ bản, ngoại trừ TimeFence, cũng có thể được kích hoạt ngay lập tức khi trạng thái bối cảnh chuyển đổi. Ví dụ: bạn có thể đặt DetectedActivityFence để kích hoạt tạm thời 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 sang trạng thái 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 các 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 sẽ 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ác cây lồng nhau của AND, ORNOT đều hợp lệ, vì vậy, bạn có thể dùng bất kỳ tổ hợp boolean nào của hàng rà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 gian 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ý một hàng rào.