울타리 만들기

펜스는 앱이 반응할 수 있는 하나 이상의 컨텍스트 조건을 정의합니다. 펜의 상태가 변경되면 앱은 콜백을 수신합니다.

펜에는 기본 컨텍스트 신호 집합을 나타내는 기본 펜과 불리언 연산자를 사용하여 여러 기본 펜을 결합하는 조합 펜의 두 가지 유형이 있습니다. 모든 울타리는 AwarenessFence의 인스턴스입니다.

원시 울타리 만들기

기본 컨텍스트 신호 집합을 나타내는 기본 울타리는 awareness.fence 패키지에 정의되어 있습니다. 다음 예는 사용자의 감지된 활동이 WALKING이면 TRUE이고 그렇지 않으면 FALSE인 간단한 울타리를 만드는 방법을 보여줍니다.

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

위의 예에서 DetectedActivityFenceduring 호출에 의해 생성되었으므로 사용자가 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));

다음 단계: 펜스 등록