2017-07-14 45 views
0

我的任務是修復一些在iBeacons中使用altbeacon的代碼。 信標的檢測在前臺運行良好,但不在後臺運行。關於RegionBootstrap以及何時使用它的疑問

在這種掃描在前景模式中,在進入背景的onStop使用來自beaconmanager解除綁定,然後調用該例在beaconBkgService的方法中的活動:

活動碼:

protected void onStop() { 

    super.onStop(); 

    try { 
     // Do we need to unbind???? 
     iBeaconManager.unbind(this); 

     beaconBkgService.startScanning(); 

     } catch (Exception e) { 
     e.printStackTrace(); 
     } 

} 

beaconBkgService代碼:

public class beaconBkgService extends Application implements BootstrapNotifier { 

    public void startScanning() { 

     try { 

      mBeaconManager = BeaconManager.getInstanceForApplication(this); 
      mBeaconManager.setBackgroundBetweenScanPeriod(3000L); 
      mBeaconManager.setBackgroundScanPeriod(1000L); 

      mBeaconManager.setBackgroundMode(true); 

      if (mRegionBootstrap == null){ 
       mAllBeaconsRegion = new ArrayList<Region>(); 

       for (UserBeacons userBeacon : userBeacons) { 

        mBeaconsRegion = new Region(userBeacon.identifier, userBeacon.UUID, null, null); 
        mAllBeaconsRegion.add(mBeaconsRegion); 
       } 
       mRegionBootstrap = new RegionBootstrap(this, mAllBeaconsRegion); 
      } 

     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

如果該活動的onStop調用燈塔管理員解除綁定()調用beaconBkgService.startScanning之前( )?我曾嘗試過,但沒有任何工作。

期望的結果是,當應用程序進入後臺時,掃描應該每3秒持續1秒,但beaconBkgService didEnterRegion不會在啓動信標和應用程序處於後臺時觸發。

當我得到這個工作時,如果Activity在前臺檢測到信標,那麼ExitRegion如何實現,然後用戶切換到背景並退出信標區域? beaconBkgService中的onExitRegion會觸發嗎?即使用RegionBootstrap從前景到後臺保存狀態?

回答

0

RegionBootstrapBootstrapNotifier不適用於和Android Activity。它們應該用於Android Application類或Android應用程序生命週期中存在的其他對象。

瞭解在Android生命週期中,隨着用戶在應用程序周圍導航,創建和銷燬活動。任何試圖在活動中進行長期信標掃描的代碼都不起作用。

相比之下,應用程序對象是在用戶第一次啓動應用程序時(或者應用程序由第一個信標檢測自動啓動)並且繼續存在時創建的。

解決此問題的最簡單方法是將其重寫爲使用Application類。您可以在Android Beacon庫的示例代碼中看到如何執行此操作的示例。見在這裏背景節開始應用:http://altbeacon.github.io/android-beacon-library/samples.html

你也可能需要使用該代碼在同一頁面的汽車電池節能示例代碼部分。

+0

感謝您的回覆。後臺掃描是在另一個類公共類beaconBkgService擴展應用程序實現BootstrapNotifier,以便應該是OK是嗎? – newbie101