0
我正在使用蓝牙低功耗与电子卡交换数据。在数据交换过程中,卡有时可能会将其设备名称更改为新名称,当我修改此名称时,我正在查找某种方式。如何检测连接的BLE设备何时更改其名称?
当我在开始时连接到设备时,我存储了此设备的名称和MAC地址,但似乎android没有看到设备名称已更改。其实,当我尝试读取这个名字时,它会将我的旧名称还原为新名称,而不是新名称。
将该例在与电子卡的每一个数据交换,每一次,这回我的老字号,即使在卡更改其名称:
BluetoothManager bluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
List<BluetoothDevice> devices = bluetoothManager.getConnectedDevices(BluetoothProfile.GATT);
for(BluetoothDevice device : devices) {
Log.i("BLE_device_name : ",device.getName());
}
是否有监听吗?或者强制Android获取真实BLE名称而不是记忆的名称的方法?
我看到的唯一的解决办法是让新的蓝牙扫描,但它是我的过程太长..
谢谢
问题是,包含设备名称的GATT特性在BLE SoC重新启动之前不会使用新名称进行刷新。但是,如果我尝试重新启动SoC,我将失去连接。 – Aznhar
当您在Android中读取GATT特性时,您总是向外围设备发送读取请求(在Android端不使用缓存或类似内容)。因此,根据定义,如果外设在重新启动外设之前不更新名称特征值,则在重新启动之前外设的名称不会更新。 – Emil