我已經寫了我自己的小BLE掃描服務,每3-5秒觸發一次警報。它掃描1.1秒鐘以獲得周圍的信標,然後將RSSI信號轉換爲粗略的鄰近信號。iBeacon後臺掃描
我現在正在考慮Radius Networks Android iBeacon服務,但我想知道如何才能實現相同的後臺掃描。
例如:我希望beacons scannign在後臺啓動並運行,並接收intents到廣播接收器來決定我對掃描的信標所做的操作。
有沒有soem的例子,有沒有估計這個電池消耗多少?
我已經寫了我自己的小BLE掃描服務,每3-5秒觸發一次警報。它掃描1.1秒鐘以獲得周圍的信標,然後將RSSI信號轉換爲粗略的鄰近信號。iBeacon後臺掃描
我現在正在考慮Radius Networks Android iBeacon服務,但我想知道如何才能實現相同的後臺掃描。
例如:我希望beacons scannign在後臺啓動並運行,並接收intents到廣播接收器來決定我對掃描的信標所做的操作。
有沒有soem的例子,有沒有估計這個電池消耗多少?
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。
嗨大衛,很多thx爲您的意見。對於我的具體演示,我現在使用了服務和鬧鐘,但是我會完全使用您的API。 –
我發現IBeacon類和scanFromRecord方法非常有幫助。我無法理解的一件事是216線正在做什麼。顯然,一個估計信標被檢測到,但它幾乎會返回一個「空」IBeacon類。這是遺留代碼嗎?我剛收到來自estimote的iBeacons,它的工作原理。順便說一句,我很樂意接觸並嘗試您的公司信標和服務。我們如何直接連接? –
瞭解您的演示。這是一個開源項目,所以我一直在尋找輸入和合作者。也許我們 – davidgyoung