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