Zarządzanie wywołaniami zwrotnymi z ogrodzenia

Po zarejestrowaniu płotu Twoja aplikacja musi dodać wywołanie zwrotne, które będzie odpowiadać w przypadku jego uruchomienia. Możesz to zrobić, używając klasy podrzędnej BroadcastReceiver do obsługi metod Intent z ogrodzenia.

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

Tworzenie podklasy BroadcastBroadcastr

Poniższy przykład pokazuje klasę FenceReceiver, która powoduje rozszerzenie BroadcastReceiver. Klasa implementuje metodę wywołania zwrotnego BroadcastReceiver.onReceive(), aby obsłużyć wszystkie metody Intent pochodzące z ogrodzeń utworzonych przez Twoją aplikację. Po otrzymaniu klasy Intent używana jest metoda FenceState.extract(), która określa stan ogrodzenia i przekazuje je 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);
        }
    }
}