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 sẽ nhận được lệnh gọi lại.

Có hai loại hàng rào: hàng rào gốc đại diện cho tập hợp 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 gốc 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 nguyên thuỷ

Hàng rào nguyên gốc (primitive fence) đại diện cho tập hợp tín hiệu bối cảnh cơ bản đượ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 là TRUE khi hoạt động được phát hiện của người dùng là WALKINGFALSE nếu không:

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

Trong ví dụ trước, DetectedActivityFence được tạo bằng 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 là WALKING.

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

Mỗi loại hàng rào nguyên gốc, ngoại trừ TimeFence, cũng có thể được kích hoạt tạm thời khi trạng thái ngữ 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 FALSE trở lại.

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 gốc 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 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â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ỳ giá trị 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 từ vị trí hiện tại, hoặc đã hơn một giờ 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.