簡體   English   中英

AltBeacon getIdentifier返回錯誤的值

[英]AltBeacon getIdentifier returns wrong value

我的代碼或信標返回“錯誤”值時出現問題(用引號引起來,因為這很可能是我的代碼中的錯誤)。 我一直在閱讀信標,據我所知,我可以給我的信標3個標識符。 我已將我的信標的標識符配置為000000000000001234(很多0,以1234結尾),大號為0001,小號為0002。

這是我在測距信標時使用的一些代碼:

String id1 = beacon.getId1().toString(); 
String id2 = beacon.getId2().toString();
String id3 = beacon.getId3().toString();

我以為這些將代表我在信標中擁有的標識符,但是我為id1獲得的值是“ 0x02676f6f2e67c ...”,而id2和id3為空。 我完全離開了嗎?

也許我使用了錯誤的解析器? (我沒有收到信標客戶支持的郵件,盡管我沒有指定要使用標識符)

.setBeaconLayout("s:0-1=feaa,m:2-2=10,p:3-3:-41,i:4-20v"));

我必須承認,如果信標解析器取決於我要如何解碼我的信標,或者取決於我所擁有的那種信標,或者甚至是兩者,我都不太了解。

出於記錄,我正在使用Android,但是我認為這無關緊要。

幾點:

  • 存在幾種流行的信標格式,每種信標格式發送具有不同標識符長度的不同數量的標識符。 AltBeacon和iBeacon分別發送三個標識符,分別為16、2和2個字節。 Eddystone-UID發送兩個分別為10和6個字節的標識符。 Eddystone-URL發送一個長度在1-17字節之間的可變標識符。

  • 問題並沒有說明正在傳輸什么信標格式。 這聽起來像是iBeacon或AltBeacon,因為這些格式具有三部分標識符(有時稱為ProximityUUID,主要和次要)。 但是這些格式的第一個標識符是16個字節的UUID,該示例顯示了這樣的標識符:000000000000001234,如果以十六進制顯示,則可能是9個字節,如果以十進制表示,則可能是未知的字節數。

  • 所示的信標布局字符串(“ s:0-1 = feaa,m:2-2 = 10,p:3-3:-41,i:4-20v”)適用於Eddystone-URL,其格式為單個可變長度標識符,可以使用自定義壓縮算法將其轉換為URL字符串。

  • 使用單個標識符(ID2和ID3為空)檢測到的信標可能是Eddystone-URL傳輸。 ID1的部分顯示為0x02676f6f2e67c ...相當於URL“ http://goo.g ” ...

結論:

  • 被檢測到的信標可能不是您打算檢測到的信標。

  • 您附近可能有多個發送信標,或者發出了多種不同類型發送的信標,這就是為什么您要檢測Eddystone-URL信標的原因。

  • 您打算檢測的信標傳輸可能不是Eddystone-URL格式,因此您可能需要一個不同的BeaconParser。 您需要先弄清楚格式,然后才能添加適當的BeaconParser。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM