Zarządzanie wywołaniami zwrotnymi

Po zarejestrowaniu obszaru aplikacja musi dodać wywołanie zwrotne, aby reagować na wywołanie obszaru. Możesz to zrobić za pomocą podklasy BroadcastReceiver, która będzie obsługiwać metody Intent z obszarów.

Zanim dodasz wywołania zwrotne do obszaru, musisz go najpierw zarejestrować.

Tworzenie podklasy BroadcastReceiver

Poniższy przykład przedstawia klasę FenceReceiver, która rozszerza klasę BroadcastReceiver. Klasa implementuje BroadcastReceiver.onReceive()metodę wywołania zwrotnego do obsługi wszystkich metod Intent, które pochodzą z obszarów utworzonych przez aplikację. Gdy zostanie odebrany Intent, metoda FenceState.extract() służy do uzyskania stanu obszaru i przekazania 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);
        }
    }
}