펜스는 앱이 반응할 수 있는 하나 이상의 컨텍스트 조건을 정의합니다. 펜스 상태가 변경되면 앱이 콜백을 수신합니다.
펜스에는 두 가지 유형이 있습니다. 컨텍스트 신호의 기본 집합을 나타내는 원시 펜스와 여러 원시 펜스를 불리언 연산자와 결합하는 조합 펜스입니다. 모든 펜스는 AwarenessFence
의 인스턴스입니다.
기본 펜스 만들기
기본 시그널 세트를 나타내는 기본 펜스는 awareness.fence
패키지에 정의되어 있습니다. 다음 예에서는 사용자의 감지된 활동이 WALKING
일 때 TRUE
이고 그렇지 않으면 FALSE
인 간단한 펜스 생성을 보여줍니다.
AwarenessFence walkingFence = DetectedActivityFence.during(DetectedActivityFence.WALKING);
위의 예에서 DetectedActivityFence
는 during
를 호출하여 생성되었으며 사용자가 WALKING
일 때마다 펜스가 TRUE
상태입니다.
전환에 반응
각 기본 펜스 유형(TimeFence
제외)도 컨텍스트 상태가 전환될 때 잠시 트리거될 수 있습니다. 예를 들어 사용자가 starting
또는 stopping
활동일 때 일시적으로 트리거되도록 DetectedActivityFence
를 설정할 수 있습니다. Transition 펜스는 몇 초 동안 TRUE
상태로 전환된 후 FALSE
상태가 됩니다.
조합 펜스 만들기
Combination 펜스는 여러 프리미티브 펜스 유형을 불리언 연산자와 함께 사용합니다. 다음 예는 사용자가 걷고 있고 헤드폰이 연결되어 있을 때 활성화되는 조합 펜스 생성을 보여줍니다.
// 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
);
AND
, OR
, NOT
의 중첩 트리가 유효하므로 펜스의 모든 부울 조합이 가능합니다. 다음 예는 사용자가 현재 위치에서 100m 이상 이동하거나 현재 1시간 이상 경과했을 때 트리거되는 펜스를 보여줍니다.
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));
다음 단계: 펜스 등록