2017-04-21 9 views
2

현재 Android Studio에서 iBeacons을 감지하고 사용하는 Android 앱을 개발 중입니다. 비컨을 감지하고 매개 변수를 가져야하는 부분이 완료되었지만 Android 시스템에서 사용할 수있는 API를 사용하여 특정 iBeacon에 대해이 매개 변수의 값을 변경하는 문제에 직면하고 있습니다. 필자는 setId1 (UUID), setId2 (Major), setId3 (Minor) 같은 Beacon.Builder() 클래스의 여러 함수를 사용하여 값을 수정할 수 있지만 사용 방법을 알기 위해 약간의 손실이 있음을 확인했습니다. 이 기능은 특정 신호에서 작동합니다.Android의 SDK 덕분에 iBeacon의 매개 변수 (UUID, Major, Minor, TxPower) 값을 변경하는 방법

String distance = String.valueOf(beacons.iterator().next().getDistance()); 
String Uuid = String.valueOf(beacons.iterator().next().getId1()); 
String major = String.valueOf(beacons.iterator().next().getId2()); 
String minor = String.valueOf(beacons.iterator().next().getId3()); 
String Rssi = String.valueOf(beacons.iterator().next().getRssi()); 
String TxPower = String.valueOf(beacons.iterator().next().getTxPower()); 

arrayIdBeacon.clear(); 
arrayIdBeacon.add(new IdBeacon(Uuid,major,minor,distance,Rssi,TxPower)); 

그리고이 :

class IdBeacon { 
    private String UUID; 
    private String Major; 
    private String Minor; 
    private String Distance; 
    private String RSSI; 
    private String TxPower; 

    public IdBeacon (String UUID, String Major, String Minor, String Distance, String RSSI, String TxPower){ 
     this.UUID = UUID; 
     this.Major = Major; 
     this.Minor = Minor; 
     this.Distance = Distance; 
     this.RSSI = RSSI; 
     this.TxPower = TxPower; 
    } 

    public String getUUID() { return UUID; } 
    public void setUUID(String UUID) { this.UUID = UUID; } 

    public String getMajor() { return Major; } 
    public void setMajor(String major) { Major = major; } 

    public String getMinor() { return Minor; } 
    public void setMinor(String minor) { Minor = minor; } 

    public String getDistance() { return Distance; } 
    public void setDistance(String distance) { Distance = distance } 

    public String getRSSI() { return RSSI; } 
    public void setRSSI(String RSSI) { this.RSSI = RSSI; } 

    public String getTxPower() { return TxPower; } 
    public void setTxPower(String txPower) { this.TxPower = txPower; } 
} 

이것은 아이 비콘의 매개 변수의 서로 다른 값을 얻을 수있는 코드는 다음과 같습니다

내가 비컨을 위해 만든 내 클래스의 정의입니다 내보기에 대한 내 iBeacon 매개 변수 표시를 처리 할 ArrayAdapter 선언입니다.

public BeaconAdapter(Context context, ArrayList<IdBeacon> idBeacons){ 
    super(context, 0,idBeacons); 
} 

@NonNull 
@Override 
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 

    IdBeacon beacon = getItem(position); 

    if (convertView == null){ 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.mylist, parent, false); 
    } 

    TextView tvUuid = (TextView) convertView.findViewById(R.id.ValUUID); 
    TextView tvMajor = (TextView) convertView.findViewById(R.id.ValMajor); 
    TextView tvMinor = (TextView) convertView.findViewById(R.id.ValMinor); 
    TextView tvDist = (TextView) convertView.findViewById(R.id.ValDist); 
    TextView tvRSSI = (TextView) convertView.findViewById(R.id.ValRSSI); 
    TextView tvTxPower = (TextView) convertView.findViewById(R.id.tvTxPower); 

    if (beacon != null){ 
     tvUuid.setText(beacon.getUUID()); 
     tvMajor.setText(beacon.getMajor()); 
     tvMinor.setText(beacon.getMinor()); 
     tvDist.setText(beacon.getDistance()); 
     tvRSSI.setText(beacon.getRSSI()); 
     tvTxPower.setText(beacon.getTxPower()); 
    } 

    return convertView; 
} 

답변

0

Android Beacon Library의 Beacon.Builder() 클래스는 Android 장치 자체에서 비콘 보급 알림을 전송할 목적으로 새 비컨 개체를 생성하는 데 사용됩니다.

외부 하드웨어 신호 구성을 변경 (예 : 마이너 변경) 라이브러리가 지원되지 않습니다. 이렇게하기위한 표준 메커니즘이 없기 때문에 이것은 사실입니다. 각 비콘 하드웨어 제조업체는 구성을 변경하기위한 자체 시스템을 보유하고 있으며 그 대부분은 독점적이며 문서화되어 있지 않습니다.

결론 : 프로그래밍 방식으로 하드웨어 비콘 구성을 변경하려면 비콘 공급 업체의 특정 SDK가 필요합니다.