یک حصار ایجاد کنید

حصار یک یا چند شرایط زمینه را تعریف می کند که برنامه شما می تواند به آن واکنش نشان دهد. هنگامی که وضعیت حصار تغییر می کند، برنامه شما یک تماس پاسخ دریافت می کند.

دو نوع حصار وجود دارد: حصارهای اولیه که مجموعه اولیه سیگنال های زمینه را نشان می دهند و حصارهای ترکیبی که چندین حصار اولیه را با استفاده از عملگرهای بولی ترکیب می کنند. همه نرده ها نمونه هایی از AwarenessFence هستند.

یک حصار بدوی ایجاد کنید

حصارهای اولیه، که مجموعه اصلی سیگنال های زمینه را نشان می دهند، در بسته awareness.fence تعریف شده اند. مثال زیر ایجاد یک حصار ساده را نشان می‌دهد که وقتی فعالیت شناسایی‌شده کاربر WALKING باشد TRUE و در غیر این صورت FALSE :

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

در مثال قبل، DetectedActivityFence با فراخوانی در during ایجاد شد، به این معنی که هر زمان که کاربر در WALKING است، حصار در حالت TRUE قرار دارد.

به انتقال ها واکنش نشان دهید

هر نوع حصار ابتدایی، به استثنای TimeFence ، همچنین می‌تواند به‌طور لحظه‌ای هنگام انتقال حالت زمینه فعال شود. برای مثال، می‌توانید یک DetectedActivityFence را تنظیم کنید تا زمانی که کاربر در starting یا stopping فعالیت است، به‌طور لحظه‌ای فعال شود. حصارهای انتقالی برای چند ثانیه قبل از اینکه دوباره 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 متر از مکان فعلی حرکت می کند، یا بیش از یک ساعت از زمان فعلی گذشته است، فعال می شود.

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));

مرحله بعدی: ثبت حصار .