2015-01-20 12 views
7

나는 비콘을 사용하는 응용 프로그램을 개발 중입니다. 나는 같은 Estimote SDK를 통해 갔다. 이제 특정 비컨의 고유 ID를 알아야합니다. 내가 3 개의 비컨을 가지고 있고 모두가 장치의 범위 내에 있다고 가정 해보십시오. 이제 비컨의 고유 ID를 기반으로 다른 기능을 수행하려고합니다. 이를 위해 나는 각 신호의 고유 ID를 알아야합니다. 현재 비컨에 대해 UUID를 제공하고 있으며 장치의 영역에 있는지 여부를 확인하고 있습니다. 다음과 같이 내 코드는 다음과 같습니다 - 나는 ID가에 따라 결정을 내릴 수 있도록 Android에서 Estimote SDK를 사용하여 신호의 고유 ID를 얻는 방법

private static final String ESTIMOTE_PROXIMITY_UUID = "XYZ"; 
private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId",ESTIMOTE_PROXIMITY_UUID, null, null); 

beaconManager.setMonitoringListener(new MonitoringListener() { 

      @Override 
      public void onExitedRegion(Region region) { 
      //Region Exited 
      } 

      @Override 
      public void onEnteredRegion(Region arg0, List<Beacon> arg1) { 
       // TODO Auto-generated method stub 
       //Do something ... 
      } 
     }); 

지금 내가 프로그래밍 비콘의 고유 ID를 얻을 필요가있다. 동일한 항목을 정렬하도록 도와주세요. 어떤 도움을받을 수 있습니다. 감사합니다. .

+0

을 저도 같은 문제에 직면 한 . 해결책을 찾았습니까? – Roadblock

답변

6

모든 비콘은 ID입니다.
ID 20 바이트이며 세 부분으로 나누어진다 :

  • proximityUUID (16 바이트)

  • major 수 (2 바이트)

  • minor 수 (2 바이트).

특정 신호를 식별하는 데 어떻게 사용합니까?

먼저 주변에 많은 표지가있을 수 있다는 것을 알고 있어야합니다. 이 비컨은 다른 공급 업체, 회사 또는 개발자가 제공 할 수 있으므로 필터를 제거하려고합니다.
비콘을 필터링하려면 사용자 또는 회사에서 제공 한 비콘을 그룹화하려면 proximityUUID을 사용해야합니다. 모든 비컨에 같은 proximityUUID을 줘.
당신이 모니터링에 의해 이르기까지 시작할 수 후 : 당신의 표지가 근처에있을 때

private final Region MY_BEACONS = new Region("MY_BEACONS","YOUR_PROXIMITY_UUID", null, null); 

beaconManager.startMonitoring(MY_BEACONS); 
beaconManager.startRanging(MY_BEACONS); 

는 지금, 당신의 청취자 당신이 통보됩니다.

이제 도시에 영화관 용 앱을 작성한다고 가정 해 보겠습니다. 각 시네마는 에 대해 서로 다른 두 가지 비컨을 사용하여 서로 다른 동작을 수행합니다.. 영화관 용 비콘을 구분하는 방법과 특정 영화관에서 특정 비컨에 대해이를 수행하는 방법은 무엇입니까?
majorminor 필드를 사용하십시오. 특정 영화 모든 비컨을 식별

  • 사용 major 특정 영화 특정 비콘 식별
  • 사용 minor 예 :.당신이 그런 방법으로 비콘에 대한 ID를 만들 때

, 특정 비콘을 얻을 수행 할 수있는 조치 :

private final int SCARY_CINEMA_ID = 1111; 
private final int SCARY_CINEMA_BEACON_1 = 1; 
private final int SCARY_CINEMA_BEACON_2 = 2; 
private final int COMEDY_CINEMA_ID = 2222; 
private final int COMEDY_CINEMA_BEACON_1 = 1; 
private final int COMEDY_CINEMA_BEACON_2 = 2; 


@Override 
public void onEnteredRegion(Region region, List<Beacon> beacons) { 
    for(Beacon beacon : beacons){ 
     if(beacon.getMajor() == SCARY_CINEMA_ID){ 
      if(beacon.getMinor == SCARY_CINEMA_BEACON_1){ 
       //do something for this beacon 
      } else{ 
       //do something for second beacon in cinema 
      } 
     } else if(beacon.getMajor == COMEDY_CINEMA_ID){ 
      ... 
     } 
} 

희망, 그것은 당신을 도울 것입니다 :)

+0

안녕 mklimek, 답변 주셔서 감사합니다. 메이저 & 마이너 (Major & Minor), "SCARY_CINEMA_ID"& "SCARY_CINEMA_BEACON_1"는 무엇입니까? 좀 더 설명해 주시겠습니까? –

+1

@SalmanKhan'major'와'minor '는 esitmote 비컨의 표준 필드입니다. 우리는 그들을 비컨을 식별하기위한 ID로 사용할 수 있습니다. SCARY_CINEMA_ID는 시네마의 경우 예를 들어 1111과 같이 임의로 선택된 'minor'입니다. COMEDY_CINEMA_ID는 다른 영화의 경우 '2222'와 같이 두 번째 'minor'입니다. 두 개의 비컨이 있고 SCARY_CINEMA 및 'proximityUUID' = "beaconsForCinemas"와 연결하려는 경우 첫 번째 비콘에 대한 값을 설정하려면 다음과 같이 uuuid = "beaconsForCinemas", major = 1111, minor = 1,이 시네마의 두 번째 비콘은 동일하지만 집합 마이너 = 2를 사용합니다. – mklimek

+0

@SalmanKhan http://estimote.com/api/getting -started/intro-to-beacons.html – mklimek

0

나는 그것을 시험해 보았을 때이 기사에 걸쳐 도움이 될 수도있다. https://community.estimote.com/hc/en-us/articles/200868188-How-do-I-modify-UUID-major-and-minor-values-

+0

안녕하세요, Swarna, 대답 주셔서 감사합니다.하지만 Android 용으로 검색하고 있습니다. Android에서이 문제를 해결할 수있는 방법은 없나요? –

+0

당신은 아마 추측에 직접 물어 봐야, 대부분의 기능은 아직 안드로이드에 사용할 수 없습니다. – Mal

+0

도움 주셔서 감사합니다. –