Gestisci callback recinzioni

Una volta registrato un recinto, la tua app deve aggiungere un callback per rispondere quando il recinto viene attivato. Puoi farlo utilizzando una sottoclasse di BroadcastReceiver per gestire i metodi Intent delle recinzioni.

Prima di aggiungere callback a un recinto, devi prima registrarlo.

Crea una sottoclasse di BroadcastReceiver

L'esempio seguente mostra la classe FenceReceiver, che estende BroadcastReceiver. La classe implementa il metodo di callback BroadcastReceiver.onReceive() per gestire tutti i metodi Intent che hanno origine dalle recinzioni create dalla tua app. Quando viene ricevuto un Intent, il metodo FenceState.extract() viene utilizzato per ottenere lo stato della recinzione e passarlo al callback.

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