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