gpt4 book ai didi

android - Android 中的 Gatt 服务器设备名称长度

转载 作者:行者123 更新时间:2023-11-29 15:43:16 25 4
gpt4 key购买 nike

我正在制作一个在 Android 设备上运行的 Gatt 服务器应用程序,它运行良好。

但是我有一个关于设备名称的问题。

我用我的“Nexus 5X”创建了这个应用程序,它的默认设备名称是“Nexus 5x”,Gatt 客户端可以很好地扫描这个设备。

但是,如果服务器运行在“Galaxy S7”上,客户端无法找到服务器设备。

因此,我检查了服务器的设备名称,默认为“Samsung Galaxy S7”。将名称更改为“gal7”后,它工作正常。

在我的测试中,android gatt 服务器允许设备名称长度最多为 8 个字符。

“Nexus 5x”--> 很好

“银河 S7”--> 不好

“联系”-->很好

“长名称设备”-->不好

是否有任何原因(是否有错误),gatt 服务器设备名称长度限制?

最佳答案

你的问题是advertise packet 最多可以是31 bytes。删除一些 header 后,设备名称剩下 8 个(假设您在广告商中包含服务 UUID)。如果您想在广告中包含设备名称,正确的做法是这样的:

AdvertiseSettings mAdvertiseSettings = new AdvertiseSettings.Builder()
.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY)
.setConnectable(true)
.setTimeout(0)
.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
.build();
AdvertiseData mAdvertiseData = new AdvertiseData.Builder()
.setIncludeDeviceName(false)
.addServiceUuid(new ParcelUuid(MY_SERVICE_UUID))
.build();
AdvertiseData mScanResponseData = new AdvertiseData.Builder()
.setIncludeDeviceName(true)
.build();
BluetoothAdapter.getDefaultAdapter().getBluetoothLeAdvertiser()
.startAdvertising(mAdvertiseSettings, mAdvertiseData,
mScanResponseData, this /* AdvertiseCallback */);

这是在发送您的主要服务的 UUID 和打包的广告,同时保持 Rx channel 打开以发送扫描响应请求,该请求将发送名称(我认为最多 27 个字符)。

关于android - Android 中的 Gatt 服务器设备名称长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37151269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com