gpt4 book ai didi

java - 借助Android上的SDK,如何改变iBeacon的参数值(UUID、Major、Minor、TxPower)

转载 作者:行者123 更新时间:2023-11-29 02:41:55 29 4
gpt4 key购买 nike

我目前正在 Android Studio 上开发一个 Android 应用程序来检测和使用 iBeacon。我必须检测信标并获取他的参数的部分已经完成,但我面临着使用 Android 系统上可用的 API 更改特定 iBeacon 的此参数值的问题。我已经看到 Beacon.Builder() 类上的 setId1 (UUID)、setId2 (Major)、setId3 (Minor) 等不同函数可用于修改值,但我有点不知道如何使用这在特定的 Beacon 上起作用。

这是我为 Beacon 创建的类的定义:

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 参数在我的 View 中的显示:

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;
}

最佳答案

Android 信标库中的 Beacon.Builder() 类用于构造新的信标对象,以便从 Android 设备本身传输信标广告。

库中不支持更改外部硬件信标配置,例如更改次要。这是真的,因为没有这样做的标准机制。每个信标硬件制造商都有自己的系统来更改配置,其中许多是专有的且未记录。

底线:要以编程方式更改硬件信标配置,您需要信标供应商提供的特定 SDK。

关于java - 借助Android上的SDK,如何改变iBeacon的参数值(UUID、Major、Minor、TxPower),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43537068/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com