Zarządzanie wywołaniami zwrotnymi

Gdy zarejestrujesz ogrodzenie, Twoja aplikacja musi dodać wywołanie zwrotne, aby reagować na jego aktywowanie. Możesz to zrobić za pomocą podklasy BroadcastReceiver, aby obsługiwać metody Intent z ogrodzeń.

Zanim dodasz wywołania zwrotne do ogrodzenia, musisz najpierw zarejestrować ogrodzenie.

Tworzenie podklasy BroadcastReceiver

Poniższy przykład pokazuje klasę FenceReceiver, która rozszerza BroadcastReceiver. Klasa implementuje metodę wywołania zwrotnego BroadcastReceiver.onReceive(), aby obsługiwać wszystkie zdarzenia Intent które pochodzą z ogrodzeń utworzonych przez Twoją aplikację. Gdy zostanie odebrane zdarzenie Intent, metoda FenceState.extract() służy do pobierania stanu ogrodzenia i przekazywania go do wywołania zwrotnego.

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