我目前正在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 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;
}
2017-04-21
P. Laine