使用BLE作为服务端广播时,其他手机扫描不到该广播,这可能广播数据超过了31个字节,AdvertiseData限制长度只能在31个字节内,在最精简的情况下如:
AdvertiseData advertiseData = new AdvertiseData.Builder()
.setIncludeDeviceName(true)
.build();
这种最精简的情况下系统也要占用5个字节,只剩下26个字节可使用,在蓝牙名称是中文的情况下,系统是使用的:
mBluetoothAdapter.getName().length()
利用这个方法,我们可以广播名称长度为26个中文,广播时会按照一个中文3个字节来显示,也就是说只会显示部分名称。还会有乱码。但是可以让其他设备扫描到。
如果开发者配置数据超过26个字节,广播将会出错,onStartFailure将会返回1错误码
如果你需要排除下问题可以看下源码BluetoothLeAdvertiser.totalBytes方法