微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在android中发送Beacon时如何更改广告标志例如BR/EDR、通用可发现模式?

如何解决在android中发送Beacon时如何更改广告标志例如BR/EDR、通用可发现模式?

我可以使用 BluetoothLeAdvertiser 从我们的 Android 应用程序生成信标。当我广播信标时,前 3 个字节是不同的(根据屏幕截图),即 02011A 而不是 020106

我想在 Android BLE API 中以编程方式设置 AD 标志 06,以便我可以实现前 3 个字节是:020106

02 # Number of bytes that follow in first AD structure
01 # Flags AD type
1A # Flags value 0x06 = 000000110  
  bit 0 (OFF) LE Limited discoverable Mode
  bit 1 (ON) LE General discoverable Mode
  bit 2 (ON) BR/EDR Not Supported
  bit 3 (OFF) Simultaneous LE and BR/EDR to Same Device Capable (controller)
  bit 4 (OFF) Simultaneous LE and BR/EDR to Same Device Capable (Host)

而且,这是我用来广播信标的代码

        byte[] payload = {(byte) 0x7F,(byte) 0x23,(byte) 0x44,(byte) 0x54,(byte) 0xCF,(byte) 0x6D,(byte) 0x4A,(byte) 0x0F,(byte) 0xAD,(byte) 0xF2,(byte) 0xF4,(byte) 0x91,(byte) 0x1B,(byte) 0xA9,(byte) 0x00};

        AdvertiseData.Builder dataBuilder = new 
                           AdvertiseData.Builder().setIncludeTxPowerLevel(false);
        dataBuilder.addManufacturerData(0x4953,payload);
        AdvertiseSettings.Builder settingsBuilder = new AdvertiseSettings.Builder();

        settingsBuilder.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER);
        settingsBuilder.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH);
        settingsBuilder.setConnectable(true);

        BluetoothLeAdvertiser mAdvertiser = BluetoothAdapter.getDefaultAdapter().getBluetoothLeAdvertiser();
        mAdvertiser.startAdvertising(settingsBuilder.build(),dataBuilder.build(),new AdvertiseCallback() {
            @Override
            public void onStartSuccess(AdvertiseSettings settingsInEffect) {
                super.onStartSuccess(settingsInEffect);
            }
        });

截图:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。