2014-09-22 82 views
3

嗨,我已經創建應用程序使用altbeacon參考應用程序。我想在應用程序在後臺看到信標時使用引導通知程序調用didEnterRegion。但我不希望它每隔5分鐘掃描一次背景,我希望我的應用程序立即響應新的燈塔。有沒有辦法做到這一點?AltBeacon庫BootstrapNotifier不會調用didEnterRegion

我的代碼:

private static final String TAG = ".Application"; 
private final Identifier uuid = Identifier.parse("A1B2C3D4-AAAA-48D2-B060-D0C0D0C0D0C0"); 
private RegionBootstrap regionBootstrap; 

@Override 
public void onCreate() { 
    super.onCreate(); 

    Log.d(TAG, "App has started"); 

    Region region = new Region(TAG, uuid, null, null); 
    BeaconManager.debug = true; 
    BeaconManager.getInstanceForApplication(this).getBeaconParsers().add(
      new BeaconParser().setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24")); 
    regionBootstrap = new RegionBootstrap(this, region); 
} 

@Override 
public void didEnterRegion(Region region) 
{ 
    Log.i(TAG, "BACKGROUND ACTIVATED"); 
} 

@Override 
public void didExitRegion(Region region) { 

} 

@Override 
public void didDetermineStateForRegion(int i, Region region) { 

} 

}

回答

2

可以增加後臺掃描頻率用下面的代碼:

beaconManager.setBackgroundBetweenScanPeriod(0l); 
beaconManager.setBackgroundScasnPeriod(1100l); 

這將使背景檢測倍的速度在前景。但要預先警告,這會讓你的應用使用大量的電池電量。您可以調整掃描週期到您的電量消耗公差。如您所述,默認值爲5分鐘(5 * 3600l)。

Android L擁有新的掃描API,可以幫助改進檢測定時器和電池使用之間的這種折衷。但是,對於4.3和4.4應用程序,您需要進行判斷呼叫。

+0

那麼函數regionBootstrap呢?此功能是否有效?因爲在API文檔中它說:「允許用戶在用戶進入信標區域時設置應用程序後臺啓動的類。」這是否在後臺模式下工作?因爲我只有在啓動應用程序時纔會調用didEnterRegion。 – Juraj 2014-09-23 12:15:39

+0

是的,RegionBootstrap將啓動應用程序到後臺,並且在檢測到與指定區域匹配的信標時調用「didEnterRegion」。具體時間取決於您的應用程序的狀態。看到這裏:http://altbeacon.github.io/android-beacon-library/resume-after-terminate.html – davidgyoung 2014-09-23 13:52:21

相關問題