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