Как управлять обратными вызовами при пересечении геозоны

После регистрации геозоны приложение должно добавить обратный вызов, чтобы реагировать на ее срабатывание. Для этого можно использовать подкласс BroadcastReceiver, чтобы обрабатывать методы Intent из геозон.

Прежде чем добавлять обратные вызовы в ограждение, необходимо зарегистрировать его.

Создайте подкласс BroadcastReceiver

В следующем примере показан класс FenceReceiver, который расширяет BroadcastReceiver. Класс реализует метод обратного вызова BroadcastReceiver.onReceive() для обработки всех методов Intent, которые относятся к ограждениям, созданным вашим приложением. Когда приходит Intent, метод FenceState.extract() используется для получения состояния ограждения и передачи его в метод обратного вызова.

public class FenceReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        FenceState fenceState = FenceState.extract(intent);

        if (TextUtils.equals(fenceState.getFenceKey(), FENCE_KEY)) {
            String fenceStateStr;
            switch (fenceState.getCurrentState()) {
                case FenceState.TRUE:
                    fenceStateStr = "true";
                    break;
                case FenceState.FALSE:
                    fenceStateStr = "false";
                    break;
                case FenceState.UNKNOWN:
                    fenceStateStr = "unknown";
                    break;
                default:
                    fenceStateStr = "unknown value";
            }
            mLogFragment.getLogView().println("Fence state: " + fenceStateStr);
        }
    }
}