我目前正在Android Studio上開發一個Android應用程序來檢測和使用iBeacons。我必須檢測信標並獲取其參數的部分已完成,但我面臨的問題是使用Android系統上可用的API更改特定iBeacon的此參數的值。我已經看到Beacon.Builder()類中的setId1(UUID),setId2(Major),setId3(Minor)等不同的函數可用於修改這些值,但我知道如何使用這在特定的信標上起作用。如何通過Android上的SDK更改iBeacon參數(UUID,Major,Minor,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顯示的參數的不同值:
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));
這是我的ArrayAdapter的聲明來處理顯示我的iBeacon參數的視圖:
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;
}