Kyo*_* Yi 3 android bluetooth-lowenergy gatt
我正在制作一个在 android 设备上运行的 Gatt 服务器应用程序,它运行良好。
但我有一个关于设备名称的问题。
我用我的“Nexus 5X”创建了这个应用程序,它的默认设备名称是“Nexus 5x”,Gatt 客户端可以很好地扫描这个设备。
但是,如果服务器运行在“Galaxy S7”上,客户端将无法找到服务器设备。
因此,我检查了服务器的设备名称,默认为“Samsung Galaxy S7”。将名称更改为“gal7”后,它工作正常。
在我的测试中,android gatt 服务器允许设备名称长度最大为 8 个字符。
“Nexus 5x”--> 很好
“Galaxy S7”--> 不好
“Nexus”--> 很好
“长名称设备”--> 坏
是否有任何原因(错误与否),gatt 服务器设备名称长度限制?
你的问题是广告包最多可以是31个字节。删除一些标题后,设备名称只剩下 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 */);
Run Code Online (Sandbox Code Playgroud)
这样做是发送带有广告打包的主要服务的 UUID,同时保持 Rx 通道打开以接收将发送名称的扫描响应请求(我认为最多 27 个字符)。
| 归档时间: |
|
| 查看次数: |
931 次 |
| 最近记录: |