有没有办法在android BLE中更改AdvertiseData中的设备名称?
创建AdvertiseData对象时,如果在数据包中同时添加设备名称和服务uuid,则该对象将失败,因为它大于AdvertiseData限制的最大大小。是否有任何方法可以在播发数据中同时包含设备名称和服务uuid?我知道iOS可以做到这一点。安卓能做到吗有没有办法在android BLE中更改AdvertiseData中的设备名称?,android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,创建AdvertiseData对象时,如果在数据包中同时添加设备名称和服务uuid,则该对象将失败,因为它大于AdvertiseData限制的最大大小。是否有任何方法可以在播发数据中同时包含设备名称和服务uuid?我知道iOS可以做到这一点。安卓能做到吗 或者,有没有办法更改显示的设备名称?如如何在播发数据中设置设备名称?设备名称存储在BluetoothAdapter中。您可以使用以下方法进行设置: boolean isNameChanged=BluetoothAdapter.getDefaul
或者,有没有办法更改显示的设备名称?如如何在播发数据中设置设备名称?设备名称存储在BluetoothAdapter中。您可以使用以下方法进行设置:
boolean isNameChanged=BluetoothAdapter.getDefaultAdapter().setName(“myDeviceName”)代码>设备名称存储在BluetoothAdapter中。您可以使用以下方法进行设置:
boolean isNameChanged=BluetoothAdapter.getDefaultAdapter().setName(“myDeviceName”)代码>一种方法是将设备名称更改为较短的名称(这不会使数据包超过31字节),如上面的答案所述。例如,“像素3”很好,但“Xperia Premium”太长。
查阅参考资料
另一种解决方案是从主广告包中删除设备名称,并将其放入扫描响应中,如中所述
kotlin中的类似内容(不包括广告回调):
一种方法是将设备名称更改为较短的名称(这不会使数据包超过31字节),如上面的答案所述。例如,“像素3”很好,但“Xperia Premium”太长。
查阅参考资料
另一种解决方案是从主广告包中删除设备名称,并将其放入扫描响应中,如中所述
kotlin中的类似内容(不包括广告回调):
这会全局更改设备上的蓝牙设置名称,而不是专门更改BLE广告数据名称。因此,如果我决定进行文件传输,那么名称现在也将显示“myDeviceName”。这不方便。这会全局更改设备上的蓝牙设置名称,而不是专门更改BLE广告数据名称。因此,如果我决定进行文件传输,那么名称现在也将显示“myDeviceName”。这不方便。
AdvertiseData advertiseData = new AdvertiseData.Builder()
.setIncludeDeviceName( true )
.addServiceUuid( uuid )
.build();
val bluetoothLeAdvertiser: BluetoothLeAdvertiser? =
bluetoothManager.adapter.bluetoothLeAdvertiser
bluetoothLeAdvertiser?.let {bluetoothAdvertiser ->
val settings = AdvertiseSettings.Builder()
.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_BALANCED)
.setConnectable(true)
.setTimeout(0)
.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
.build()
val data = AdvertiseData.Builder()
.setIncludeTxPowerLevel(false)
.addServiceUuid(ParcelUuid(MY_SERVICE_UUID))
.build()
val scanResponse = AdvertiseData.Builder()
.setIncludeDeviceName(true)
.build()
bluetoothAdvertiser.startAdvertising(settings, data, scanResponse, advertisementCallback)
} ?: Timber.w("Failed to create advertiser")