如何修改Android应用中AltBeacon的信标发送频率?
修改AltBeacon API的信标频率
首先需要明确两个不同的频率概念,对应不同的设置方式:
1. 调整设备作为信标的发送广播间隔(自己向外发信标)
如果你是让自己的设备发送信标广播,默认1秒的广播间隔可以通过AdvertiseSettings自定义配置,而非BeaconManager。具体步骤:
- 构建自定义的
AdvertiseSettings,通过setInterval()指定广播间隔(单位毫秒) - 将该设置传入
BeaconTransmitter的启动方法
示例代码:
// 构建广播设置,设置间隔为2000毫秒(2秒) AdvertiseSettings advertiseSettings = new AdvertiseSettings.Builder() .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_BALANCED) .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM) .setTimeout(0) // 无限广播 .setInterval(2000) // 自定义广播间隔 .build(); // 创建要发送的Beacon实例 Beacon beacon = new Beacon.Builder() .setId1("你的UUID") .setId2("你的Major值") .setId3("你的Minor值") .setTxPower(-59) .build(); // 指定Beacon布局 BeaconParser parser = new BeaconParser() .setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"); // 启动广播 BeaconTransmitter transmitter = new BeaconTransmitter(context, parser); transmitter.startAdvertising(beacon, advertiseSettings, new AdvertiseCallback() { @Override public void onStartSuccess(AdvertiseSettings settingsInEffect) { // 广播启动成功 } @Override public void onStartFailure(int errorCode) { // 处理启动失败逻辑 } });
注意:Android系统对广播间隔有最低限制,多数设备不允许低于100ms,具体限制因设备而异。
2. 调整设备扫描周边信标的扫描频率(调用startRangingBeacons时的扫描周期)
如果你是用startRangingBeacons扫描周边信标,想调整扫描的频率,可以通过BeaconManager的扫描周期方法设置:
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(context); // 设置前台扫描参数:每次扫描持续1000ms,扫描间隔2000ms(每2秒扫描1次) beaconManager.setForegroundScanPeriod(1000); beaconManager.setForegroundBetweenScanPeriod(2000); // 启动扫描 Region region = new Region("all-beacons", null, null, null); beaconManager.startRangingBeacons(region);
setForegroundScanPeriod:单次扫描持续的时长(毫秒)setForegroundBetweenScanPeriod:两次扫描之间的间隔时长(毫秒)
内容的提问来源于stack exchange,提问作者Oana Butaru
相关产品推荐
相关产品推荐

