繁体   English   中英

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

[英]Gatt server device name length in Android

我正在使Gatt服务器应用程序在android设备上运行,并且效果很好。

但是我对设备名称有疑问。

我使用“ 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 */);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM