Zarządzanie wywołaniami zwrotnymi

Po zarejestrowaniu ogrodzenia aplikacja musi dodać funkcję wywołania zwrotnego, która będzie odpowiadać na jego aktywowanie. Możesz to zrobić, używając podklasy BroadcastReceiver do obsługi metod Intent z ogrodzeń.

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

Tworzenie podklasy BroadcastReceiver

Poniższy przykład pokazuje klasę FenceReceiver, która rozszerza klasę BroadcastReceiver. Klasa implementuje metodę wywołania zwrotnego BroadcastReceiver.onReceive(), aby obsługiwać wszystkie metody Intent, które pochodzą z ogrodzeń utworzonych przez Twoją aplikację. Gdy otrzymasz zdarzenie Intent, metoda FenceState.extract() jest używana do pobierania stanu ogrodzenia i przekazywania go do metody 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);
        }
    }
}