问题描述
我可以使用 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);
}
});
截图:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)