Quản lý các lệnh gọi lại hàng rào

Sau khi đăng ký một hàng rào, ứng dụng của bạn phải thêm một lệnh gọi lại để phản hồi khi hàng rào được kích hoạt. Bạn có thể thực hiện việc này bằng cách sử dụng một lớp con của BroadcastReceiver để xử lý các phương thức Intent từ hàng rào.

Trước khi thêm lệnh gọi lại vào một hàng rào, trước tiên, bạn phải đăng ký hàng rào đó.

Tạo một lớp con của BroadcastReceiver

Ví dụ sau đây cho thấy lớp FenceReceiver mở rộng BroadcastReceiver. Lớp này triển khai phương thức gọi lại BroadcastReceiver.onReceive() để xử lý tất cả phương thức Intent bắt nguồn từ hàng rào do ứng dụng của bạn tạo. Khi nhận được Intent, phương thức FenceState.extract() sẽ được dùng để lấy trạng thái hàng rào và chuyển trạng thái đó đến lệnh gọi lại.

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