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