Po zarejestrowaniu obszaru aplikacja musi dodać wywołanie zwrotne, aby reagować na jego aktywację. 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 najpierw go zarejestrować.
Tworzenie podklasy BroadcastReceiver
Poniższy przykład przedstawia klasę FenceReceiver, która rozszerza klasę BroadcastReceiver. Klasa implementuje metodę wywołania zwrotnego BroadcastReceiver.onReceive(), aby obsługiwać wszystkie metody Intent pochodzące z obszarów utworzonych przez aplikację. Gdy zostanie odebrany obiekt 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);
}
}
}