2016-07-27 47 views
0

我正在使用Android Beacon庫來製作一個信標檢測器應用程序。 我想檢測以007B開頭的Eddystone UID。我正在使用Identifier.parse(String,int)未給出想要的結果

mRegionSuccess = new Region("BeaconsSuccess", Identifier.parse("0x007b", 2), null, null); 

這不檢測以007b開頭的信標。 當我登錄該地區時,它給出id1: 123 id2: null id3: null 這123是7B的字節值。

我嘗試了Identifier.parse函數,它具有完整的10字節名稱空間,並且它正在工作。這裏的區域是id1: 0x007bxxxxxxxx id2: null id3: null

可能是什麼問題?

回答

0

該API只是不能這樣工作。它不會匹配部分標識符,只會匹配整個標識符。如果創建第一個標識符爲0x007b的區域,並嘗試匹配第一個標識符爲0x007b0000000000000000的信標,則它將不匹配,因爲0x007b!= 0x007b0000000000000000。

如果你真的想匹配只是第一標識可以定義埃迪斯通-UID的自定義燈塔格式變種第一標識符定義爲命名空間的前兩個字節的前兩個字節。您可以使第二個標識符分別爲完整的名稱空間和實例標識符。像這樣:

beaconManager.getBeaconParsers().add(new BeaconParser(). 
setBeaconLayout("s:0-1=feaa,m:2-2=00,p:3-3:-41,i:4-5,i:4-13,i:14-19")); 

這是一個黑客,但這會讓你做你想做的。