2016-07-07 20 views
0

我试图用android信标库更改扫描期限。这是我的代码使用Android信标库更新扫描期间时出错

BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this); 
     beaconManager = BeaconManager.getInstanceForApplication(this); 

     beaconManager.getBeaconParsers().add(new BeaconParser(). 
       setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24")); 
     beaconManager.bind(this); 

     try { 
      beaconManager.setForegroundScanPeriod(50l); // 1100 mS 
      beaconManager.setForegroundBetweenScanPeriod(0l); // 0ms 
      beaconManager.updateScanPeriods(); 
     } 
     catch (RemoteException e) { 
      Log.e("error", e.getMessage()); 
     } 

我尝试不同的设备,但我总是得到这个错误 的BeaconManager未绑定到该服务。呼叫beaconManager.bind(BeaconConsumer消费者),并等待回调onBeaconServiceConnect()

我想的扫描周期的变化,即使我得到这个错误的价值,但我不知道

+0

哪条线会抛出此错误? –

+0

try/catch Log.e(“error”,e.getMessage()); – user3235881

回答

0

你不能叫beaconManager.updateScanPeriods();直到你得到的回调onBeaconServiceConnect()否则你会得到在问题中提到的错误。了解对bind()的呼叫会统计信标扫描服务,这不是即时的。当您打电话更新扫描周期时,如果服务尚未启动,则会失败 - 这需要一两秒钟的时间。

两个选项:

  • 移动的编码设置里面onBeaconServiceConnect()扫描周期。
  • 在调用bind()之前移动设置前景和背景扫描周期的代码,然后删除beaconManager.updateScanPeriods();行。如果您在调用绑定之前设置扫描周期,则在服务启动时会自动应用这些扫描周期。