调用RangeNotifier时如何设置扫描iBeacon的时间?

时间:2014-03-12 07:16:02

标签: ibeacon-android

通常,新扫描需要1秒 如果扫描是1秒,如果我想解析数据,我可能不会做太多事情 如何改变这个价值?

另外,对于后台服务,如何更改freq的值?

1 个答案:

答案 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上设置后台电源节省的最简单方法。