2016-07-27 14 views
0

私はAndroid Beacon Libraryを使用してビーコン検出アプリケーションを作成しています。 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のバイト値です。

完全な10バイトの名前空間でIdentifier.parse関数を試してみましたが、機能していました。ここでは、地域はid1: 0x007bxxxxxxxx id2: null id3: null

でした。

答えて

0

APIはそれほど機能しません。部分的な識別子は一致せず、識別子の全体のみが一致します。最初の識別子が0x007bの領域を作成し、最初の識別子が0x007b0000000000000000のビーコンと一致させようとすると、0x007b!= 0x007b0000000000000000であるため一致しません。

あなた本当には、名前空間の最初の2つのバイトとして第一の識別子を定義しEddystone-UIDのカスタムビーコンフォーマットバリアントを定義することができ、第一の識別子のちょうど最初の2バイトに一致するようにしたい場合。 2番目の2つの識別子を完全な名前空間とインスタンス識別子にすることができます。このように:

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")); 

これはちょっとしたハックですが、これであなたが望むことをすることができます。

関連する問題