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