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ộ và 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, OR và NOT 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.