2016-07-27 3 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이므로 일치하지 않습니다.

당신이 정말이 네임 스페이스의 처음 두 바이트로 첫 번째 식별자를 정의 Eddystone-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")); 

이것은 약간의 해킹이지만, 원하는대로 할 수 있습니다.

관련 문제