[英]How to refresh Bluetooth device name [Scan Cache]?
我正在開發一個與BLE device
連接並發送commands
的應用程序。 其中一個命令是我們有a command for changing the Bluetooth device name
。
通信工作正常,但問題是當我們發送更改名稱的命令時,BLE 確認輸入並向我們發送輸出,但是當我們斷開連接並運行 LE Scan 時,它顯示的名稱與previous
的名稱相同,它應該顯示new name of the device
。
如果我想獲取設備的最新名稱,我需要在設備中手動打開藍牙頁面並在掃描結果中掃描那里顯示最新名稱,當我再次打開后台的應用程序及其在延遲10-sec
的LE scan
功能下掃描,它在列表中顯示新名稱。
如何要求藍牙管理器或系統refresh the cache or refresh data for that Bluetooth device
?
我不知道創建票是正確的,但我已經在谷歌問題跟蹤器中創建了票: https ://issuetracker.google.com/issues/233924346
謝謝。
我遇到了同樣的問題,並通過從原始掃描數據中讀取新名稱來解決它。 通過這種方式,您永遠不必使用從緩存中返回舊名稱的 device.getName()。 這是用於掃描回調函數的 Android Java 代碼。
private ScanCallback newscancallback()
{
ScanCallback scb;
// Device scan callback.
scb = new ScanCallback()
{
@Override
public void onScanResult(int callbackType, ScanResult result)
{
super.onScanResult(callbackType, result);
int n,k,len,getout;
BluetoothDevice dev;
byte[] rec;
StringBuilder nameb;
String name;
dev = result.getDevice();
// do not use dev.getName() which returns cached name
// read current name from raw scan record instead
name = null;
rec = result.getScanRecord().getBytes();
len = rec.length;
nameb = new StringBuilder();
n = 0;
getout = 0;
// search scan record for name
while(n < len-2 && rec[n] != 0 && getout == 0)
{
// rec[n] is length of next item
// rec[n+1] is item type - look for 8 or 9=name
// rec[n+2].. is the name, length rec[n]-1
if(rec[n] > 1 && (rec[n+1] == 8 || rec[n+1] == 9)
{ // found name
for(k = 0 ; k < rec[n]-1 ; ++k)
nameb.append((char)rec[n+2+k]);
name = nameb.toString();
getout = 1;
}
else // go to next item
n += rec[n] + 1;
}
// name is now null or the new name from the scan record
}
@Override
public void onScanFailed(int errcode)
{
}
@Override
public void onBatchScanResults(List<ScanResult> result)
{
}
};
return (scb);
}
如您在移動設備的藍牙設置中看到最新的名稱,我相信系統的藍牙管理器沒有問題。 問題在於代碼的掃描功能,因為它實際上還沒有刷新掃描列表,它可能會將最后一個已知的 BLE 列表保存在緩存中的某個位置。 如果您使用的是第三方庫,您可能需要查看他們的文檔或代碼以了解掃描功能的實際工作方式。 庫中可能有強制刷新選項或其他東西。 據我所知,為了節省設備的電池,實際刷新掃描列表會有延遲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.