Quản lý 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 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ả cá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à truyền phương thức này đế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);
        }
    }
}