如何向 Alte Beacon 添加额外数据

How can I add extra data to Alte Beacon

我正在使用 AlteBeacon 库构建一个信标,创建时没问题,但我想添加额外的数据,但我不知道该怎么做。例如我想在我的新信标中注册产品名称和价格。

public class Tab1Register extends  Fragment {

    private BluetoothAdapter blVer;
    private TextView device;
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.tab1reg, container, false);
        device = rootView.findViewById(R.id.device);
        blVer = BluetoothAdapter.getDefaultAdapter();
        boolean le2MPhySupported;
        //device.setText("hola");
        if (Build.VERSION.SDK_INT >= 21) {
            // Call some material design APIs here
            device.setText("supported");
            Beacon beacon = new Beacon.Builder()
                    .setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6")
                    .setId2("1")
                    .setId3("2")
                    .setManufacturer(0x0118)
                    .setTxPower(-59)
                    .setDataFields(Arrays.asList(new Long[] {0l}))
                    .setBluetoothName("Paulo")
                    .build();

            BeaconParser beaconParser = new BeaconParser()
                    .setBeaconLayout("m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25");
            BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getActivity(), beaconParser);

            beaconTransmitter.startAdvertising(beacon);
        } else {
            // Implement this feature without material design
            device.setText("Not supported");
        }

        return rootView;
}

了解 BLE 广告中的数据有限 space。每种信标格式都有不同数量的可用数据字节。对于 iBeacon,数字是 0 个字节,对于 Eddystone-UID,数字是 2 个字节,对于 AltBeacon,数字是 1 个字节。

问题中显示的代码已经将这一个字节的数据添加到广告中,并赋予其值为 0。例如,如果要将值更改为 255,请将代码更改为:

.setDataFields(Arrays.asList(new Long[] {255l}))

不要让 setDataFields 方法中的数据类型采用 Long 数组这一事实让您感到困惑。由于此信标格式的单个数据字段中只有一个字节可用,因此您不能在数据字段中存储整个 long 值(即 8 个字节)。该值必须在 0-255 之间。