通常,新扫描需要1秒 如果扫描是1秒,如果我想解析数据,我可能不会做太多事情 如何改变这个价值?
另外,对于后台服务,如何更改freq的值?
答案 0 :(得分:3)
如果您想更改Android iBeacon Library的默认扫描间隔,可以使用以下代码执行此操作:
try {
iBeaconManager.setForegroundScanPeriod(1100l); // 1100 mS
iBeaconManager.setForegroundBetweenScanPeriod(0l); // 0ms
iBeaconManager.updateScanPeriods();
}
catch (RemoteException e) {
Log.e(TAG, "Cannot talk to service");
}
上面的代码将扫描设置为持续1100毫秒,并在扫描之间等待0毫秒。这是默认行为。
如果您希望减慢扫描速度,通常会将betweenScanPeriod
设置为非零值,例如30秒。执行此操作时,您应将scanPeriod
设置为至少iBeacons正在广播的时间间隔 - 1100毫秒通常足以以1Hz的频率捕获iBeacons广告。
try {
iBeaconManager.setForegroundScanPeriod(1100l); // 1100 mS
iBeaconManager.setForegroundBetweenScanPeriod(30000l); // 30,000ms = 30 seconds
iBeaconManager.updateScanPeriods();
}
catch (RemoteException e) {
Log.e(TAG, "Cannot talk to service");
}
值得注意的是,iBeaconManager
实际上有两个这样的设置,一个用于前景,一个用于背景。这纯粹是为了方便起见,因为当您的应用在后台时,您通常希望扫描频率降低。无论您是自定义前景和背景设置还是接受默认设置,都可以使用以下选项激活背景模式设置:
try {
iBeaconManager.setBackgroundMode(myActivity, true);
}
catch (RemoteException e) {
Log.e(TAG, "Cannot talk to service");
}
还有一个基于上述内容的Pro version of the Android iBeacon Library,可根据活动是否可见,自动将您的应用置于前台或后台模式。这是在Android上设置后台电源节省的最简单方法。