2017-08-30 279 views
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名称而不是记忆的名称的方法?

我看到的唯一的解决办法是让新的蓝牙扫描,但它是我的过程太长..

谢谢

回答

0

如果您没有连接,您可以发出扫描和检查广告数据名称是什么(如果包含)。

如果已连接,则可以读取包含名称的GATT特征。

+0

问题是,包含设备名称的GATT特性在BLE SoC重新启动之前不会使用新名称进行刷新。但是,如果我尝试重新启动SoC,我将失去连接。 – Aznhar

+0

当您在Android中读取GATT特性时,您总是向外围设备发送读取请求(在Android端不使用缓存或类似内容)。因此,根据定义,如果外设在重新启动外设之前不更新名称特征值,则在重新启动之前外设的名称不会更新。 – Emil

相关问题