如何迭代altbeacon的id?

时间:2016-07-21 15:47:49

标签: bluetooth-lowenergy altbeacon

我正在尝试做一些测试,我想迭代我的广告信标的ID。我无法在循环中启动信标并开始广告,因为信标永远不会迭代。有没有办法可以发出一个广告,迭代id并发送另一个广告等等?

1 个答案:

答案 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);

}