我正在尝试做一些测试,我想迭代我的广告信标的ID。我无法在循环中启动信标并开始广告,因为信标永远不会迭代。有没有办法可以发出一个广告,迭代id并发送另一个广告等等?
答案 0 :(得分:0)
Android操作系统以各种可配置的速率发送广告,因此您无法完全控制每个数据包。但是,您可以设置一个计时器,每隔一秒左右递增传输的标识符,如下所示:
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void incrementIdentifierAndTransmitBeacon(final int identifier) {
Beacon beacon = new Beacon.Builder()
.setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6")
.setId2("1")
.setId3(new Integer(identifier).toString())
.setManufacturer(0x0118) // Radius Networks. Change this for other beacon layouts
.setTxPower(-59)
.setDataFields(Arrays.asList(new Long[]{0l})) // Remove this for beacon layouts without d: fields
.build();
BeaconParser beaconParser = new BeaconParser()
.setBeaconLayout(BeaconParser.ALTBEACON_LAYOUT);
BeaconTransmitter beaconTransmitter = new BeaconTransmitter(getApplicationContext(), beaconParser);
beaconTransmitter.stopAdvertising();
beaconTransmitter.startAdvertising(beacon, new AdvertiseCallback() {
});
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
incrementIdentifierAndTransmitBeacon((identifier+1) % 65536);
}
}, 1000l);
}