我目前正在开发一个Android应用程序,该应用程序可以使用库iBeacon ( Android iBeacon Library,http://developer.radiusnetworks.com/ibeacon/android/)来监视Android iBeacon Library的信号强度。
但是因为我们想使用频率非常慢的iBeacons来节省电池,所以我需要增加几分钟的频率才能在信号强度监测期间进行频繁的检测。问题是,我使用的库似乎没有提供这种功能。我在网上搜索了其他能提供这个功能的库,但是我找不到。
你知道一个库可以让一个人改变iBeacon的信标频率吗?如果没有,我应该如何进行编码?
发布于 2013-12-30 22:55:24
我对你问题的理解是:你想要一个与iBeacon沟通的安卓库来动态地改变它的广告率。
不幸的是,我认为Android是最简单的部分。最困难的是,我认识的任何iBeacon制造商都没有一个开放的API,允许您动态地更改广告费率。(不过也有一些允许您使用应用程序通过辅助蓝牙连接配置此速率。半径网络的小型USB驱动iBeacons就是这样工作的。)因为每个供应商的服务工作方式不同,所以您必须反向设计每个配置BLE服务的工作方式。
如果您真的想这样做,下面是我如何处理它的方法:
发布于 2013-12-30 18:52:23
是!来自Radius的安卓iBeacon库支持这一点。下面是示例代码,它将前景和背景扫描周期更改为每5分钟一次。这意味着库将花费5分钟进行扫描,并让您知道在这段时间内它看到了什么iBeacons。(前台默认值为1.1秒。)
你可以根据你的应用程序中的一些算法来改变这个频率。
iBeaconManager = IBeaconManager.getInstanceForApplication(this.getApplicationContext());
...
@Override
public void onIBeaconServiceConnect() {
try {
long five_minutes_in_millis = 5*60*1000l;
iBeaconManager.setForegroundScanPeriod(five_minutes_in_millis);
iBeaconManager.setBackgroundScanPeriod(five_minutes_in_millis);
} catch (RemoteException e) {
e.printStackTrace();
}
}完全披露:我是Radius网络公司的员工,也是这个图书馆的主要作者。
https://stackoverflow.com/questions/20844168
复制相似问题