2013-12-09 39 views
6

我已經寫了我自己的小BLE掃描服務,每3-5秒觸發一次警報。它掃描1.1秒鐘以獲得周圍的信標,然後將RSSI信號轉換爲粗略的鄰近信號。iBeacon後臺掃描

我現在正在考慮Radius Networks Android iBeacon服務,但我想知道如何才能實現相同的後臺掃描。

例如:我希望beacons scannign在後臺啓動並運行,並接收intents到廣播接收器來決定我對掃描的信標所做的操作。

有沒有soem的例子,有沒有估計這個電池消耗多少?

回答

8

Radius Networks'Android iBeacon Library就是這樣做的。您只需在後臺運行它就可以將IBeaconManager綁定到具有較長生命週期的產品上。這可以是自定義的android.app.Application對象,也可以是您自己的服務。由於您已經爲您的應用程序編寫了自己的服務,因此您可以輕鬆地將IBeaconManager綁定到該服務,並且只要服務運行,它就會在後臺保持活動狀態。如果您願意,您也可以使用您的服務發送廣播意圖,但對於大多數情況,這可能不是必需的。

至於電池的使用情況,圖書館的reference application舉例說明了如何在庫上設置背景模式,以便掃描次數少,節省電池。在參考應用相關的代碼是在這裏:

@Override 
    protected void onPause() { 
      super.onPause(); 
      if (iBeaconManager.isBound(this)) iBeaconManager.setBackgroundMode(this, true);      
    } 
    @Override 
    protected void onResume() { 
      super.onResume(); 
      if (iBeaconManager.isBound(this)) iBeaconManager.setBackgroundMode(this, false);      
    } 

設置後臺模式,真正降低了藍牙掃描只發生一次非常5分鐘 - 類似於iOS的做一些事情。根據對Nexus 4的測試,這可將手機的總體電池消耗從95mA降至55mA(這兩個數字均包括整個操作系統的消耗量)。

完全披露:我爲Radius Networks工作,是我的主要作者Android iBeaconLibrary。

+0

嗨大衛,很多thx爲您的意見。對於我的具體演示,我現在使用了服務和鬧鐘,但是我會完全使用您的API。 –

+0

我發現IBeacon類和scanFromRecord方法非常有幫助。我無法理解的一件事是216線正在做什麼。顯然,一個估計信標被檢測到,但它幾乎會返回一個「空」IBeacon類。這是遺留代碼嗎?我剛收到來自estimote的iBeacons,它的工作原理。順便說一句,我很樂意接觸並嘗試您的公司信標和服務。我們如何直接連接? –

+0

瞭解您的演示。這是一個開源項目,所以我一直在尋找輸入和合作者。也許我們 – davidgyoung