Android 上的 iBeacon SDK

目錄
iBeacon SDK

目前,人們正在熱烈討論 iBeacon 的潛在用例和商業模式,這種技術即使在建築物內也能實現基於位置的使用者互動。店內廣告和折扣、行動支付、導航、公共交通、公共建築和博物館的定位以及家庭自動化只是冰山一角。當然,還有無所不在的資料收集——如今,資料收集技術已經發展成熟,並且具備精確的位置資訊。在深入了解 iBeacon 技術之前,我們還將在文章中提及 iBeacon SDK。

炒作是什麼?

蘋果公司基於低功耗藍牙 (BLE) 開發的 iBeacon 協定已獲得多種裝置的支援。本文介紹了 iBeacon 和低功耗藍牙,並以開發基於位置的購物清單 Android 應用為例,展示了應用如何與 iBeacon 進行基於位置的交互。該實作基於 MOKOSmart iBeacon SDK。

iBeacon、藍牙 4.0、BLE、SMART。什麼?

iBeacon 的基礎技術是藍牙。低功耗藍牙 (BLE),通常被稱為藍牙智慧行銷標籤,已包含在藍牙標準 4.0 版本中。 BLE 不向後相容先前稱為經典藍牙的版本。藍牙 4.0 規定,符合標準的裝置必須實現低功耗藍牙或經典藍牙中的一種或兩種變體。

幾乎所有目前的智慧型手機都支援 BLE,例如 iPhone 4+ 和三星 Galaxy 3+。 iPhone 既可以作為 iBeacon 訊號的接收器,也可以作為(與 Android 不同的) 烽火 本身。 Android 從 API 版本 18(即 Android 4.3)開始就包含 BLE 驅動程式。順便提一下,目前的計算機也支援 BLE。然而,在 Windows 中,驅動程式直到 Windows 8 才內置,並且自 2011 年中期左右起,BLE 才在 Apple 電腦上可用。

BLE 繼續支援各種週邊設備,例如心率監測器和玩具直升機、溫度計、健身器材和牙刷,是的,牙刷和運動鞋。

與 iBeacons 相關的有趣之處在於感測器

這款標籤來自德州儀器 (TI),除了 iBeacon 功能外,還能測量溫度、濕度、壓力和加速度。感測器標籤還配備了陀螺儀、磁力計和兩個硬體按鈕。它是遠端控制演示的理想設備,同時傳輸和顯示演講者手部的濕度和溫度。我的下一個沙坑專案應該是舞台恐懼墊 (stage fright-o-mat)。您可以在藍牙官方網站上找到詳細的設備清單。

關貿總協定已準備就緒

設備用於交換資料的通訊模型稱為 GATT(通用屬性設定檔)。 GATT 定義了客戶端和伺服器的角色。客戶端透過服務向伺服器請求資料。服務將多個原子鍵/值對組合在一起,這些鍵/值對被稱為特性。服務和特性均透過 UUID 標識,並可包含進一步的描述。服務及其特性以配置文件的形式進行分類;該規範定義了一系列配置文件,涵蓋醫療保健、運動健身以及(在我們這裡比較有趣的)接近感應等領域。您可以在藍牙開發者入口網站的 GATT 規格下找到各個設定檔及其服務和特性。

Gatt iBeacon SDK

到達燈塔 

那麼,iBeacon 是什麼呢? iBeacon 是一項非常簡單的技術(也是 Apple 的商標),它支援與應用程式進行基於位置的互動。信標發出的訊號可以被相容於 BLE 的裝置接收,並由安裝在裝置上的應用程式處理。訊號包含信標的標識和接收強度。因此,與媒體的不實報導相反,iBeacon 本身無法傳遞內容或追蹤客戶行為。這是接收應用程式以及開發人員的責任。

現實生活中的 iBeacon

德國大規模部署 iBeacon 可能還需要一段時間,但美國和荷蘭已經有一些先例。例如,美國職棒大聯盟 (Major League Baseball) 已在 28 座體育場館安裝了 iBeacon,並將其用於 MLB 應用「At the Ballpark」中的簽到等功能。

安特衛普的魯本斯故居設立了一個展示廳,為遊客提供繪畫作品的 X 光片和地理藏寶遊戲等背景資訊。

就規模而言,最典型的例子來自蘋果公司。目前已有超過 250 家 Apple Store 商店配備了 iBeacon。結合 Apple Store 應用,iBeacon 會向店內買家發送基於位置的資訊。然而,目前可能的互動似乎相當有限:首批評論僅報告了兩條可能收到的(且相當通用的)資訊。沒有提供特價優惠或附近個別商品的具體資訊。

功能

iBeacon SDK 不使用單獨的 BLE 設定文件,而是使用藍牙廣告套件(即廣播套件)來發現藍牙裝置。如果您對該包的具體結構感興趣,可以閱讀 Adam Warski 的部落格等文章。

此類資料包會定期發送,發送間隔可透過 GATT 進行設定。資料包包含信標的 UUID,通常由製造商預先配置。因此,所有 MOKOSmart 信標都會發送相同的 UUID。主 ID 和次 ID 也用於識別各個信標。主 ID 可以表示商店的分店或連鎖店中的餐廳,次 ID 可以表示單一貨架或餐桌。

此外,廣告套餐中還包含訊號強度,可用於測量接收器與信標之間的距離。然而,由於訊號可能會受到家具或人員等空間障礙物的阻擋,因此您無法期望獲得高精度。

IBeacon SDK 為應用程式與這些資訊的交互作用提供了兩個概念:測距和區域監控。測距時,會確定與信標的距離。由於上述不準確性,測距過程僅分為三個階段。 「立即」是指幾公分的距離,「近」是指幾公尺的距離,「遠」是指十公尺以上的距離。只有接收應用程式處於活動狀態時,測距才有效。

區域監控無需此功能。在此模式下,非活動應用程式在進入或離開由一個或多個信標定義的區域時也會收到通知。目前,這項技術對廣告和零售業的吸引力正在逐漸顯現。此外,大多數信標的傳輸強度和間隔均可配置,以便根據當地情況優化電池續航時間。

「大多數信標」意味著市面上有不只一家 iBeacon 製造商。事實上,有不少:MOKOSmart、Kontakt.io、Gelo、Estimote 和 Gimbal。除了硬體之外,這些製造商還提供 iBeacon SDK 服務和用於信標管理的雲端解決方案。我們當中的愛好者可以使用 Raspberry Pi 或 Arduino 輕鬆自行設定 iBeacon 發射器。

閃爍列表

讓我們假設以下場景作為實現範例:開發人員週六早上在超市。飢餓的孩子在家等著,下午學校有烘焙義賣。只有到那時,週末才真正開始。所以,有充分的理由加快腳步。可惜的是,購物清單很長,而且與超市的佈局不符。如果超市在各個部門都配備了 iBeacon,購物清單應用程式可以突出顯示相應的條目,從而顯著減輕開發人員(當然,這完全是虛構的)的壓力。

由於我們的應用程式需要與藍牙通信,我們首先需要在 Android 清單中新增 BLUETOOTH 和 BLUETOOTH_ADMIN 授權。為了能夠使用 Estimote API 提供的服務與 iBeacons 交互,我們還必須將其公開,並將下載的 API 放在 libs/ 目錄中。

我們的原型由一個簡單的預填清單和預先定義的區域(例如超市的各部門)組成。清單條目知道自己被分配到哪個區域。在我們的範例中,我們只為每個區域分配一個 Beacon。也可以將 Beacon 清單合併到一個區域。主 Activity 負責識別目前區域並將此資訊轉發給適配器,適配器負責高亮顯示清單條目。此外,我們新增了選擇不使用 Beacon 的活動區域的選項,以便無需額外硬體即可測試我們的 UI。

在活動的 onCreate 方法中,我們為應用程式實例化了一個來自 MOKOSmart 的 Beacon 管理器。我們使用監聽器來監聽區域監控,將目前區域告知適配器,並定義 Beacon 掃描的間隔。在範例中,我們定義掃描間隔為 250 秒,然後等待 XNUMX 毫秒。這些值選擇得相對激進,以便在測試中快速獲得結果。實際上,在響應速度和電池續航力之間很難取得平衡。在這個原型中,我們也用虛擬值填滿了購物清單。我們在主活動的 on() Start 或 onStop() 方法中啟動或停止監控。

ItemList

這個適配器是 android.widget.ArrayAdapter 的衍生類,並重寫了 getView() 方法,該方法會在每一行顯示時呼叫。項目的標題寫在版面配置中定義的註解的第一行,第二行則寫在指定的區域。

如清單 1 所示,已進入的區域在 MonitorListener 的 onEnteredRegion() 回呼中傳送到適配器,該回呼已指派給我們的 BeaconManager:itemlistAdapter.segregation(region)。當呼叫 getView() 時,它會檢查線路中條目的區域是否與目前區域相符。如果匹配,則會為線路的背景著色。此外,或者也可以透過對清單進行排序,將目前區域的條目置於開頭。

該應用程式的程式碼清晰易懂;接收 iBeacon 訊號並在應用程式中處理它們並不需要太多的實現工作。 iBeacon 的測距和監控概念已對應到 MOKOSmart iBeacon SDK 中,以便使用者直覺地使用。該應用程式的完整原始程式碼可在 GitHub 上找到。

結論與展望

我們發現使用 MOKOSmart iBeacon SDK 與 iBeacon 互動非常容易。因此,我預計在實現技術方面不會遇到太大的障礙,而主要在於信標的部署和發射功率的調整。這些參數會直接影響應用程式在位置變化時的反應速度。無論如何,平衡這些參數應該很困難。

例如,在家庭自動化領域,我特別關注的是 iBeacon 與感測器的組合,例如上文提到的德州儀器的 Sensor Tag。 Estimote 還將推出帶有運動和溫度感測器的行動信標,並附帶 Estimote Stickers。首批開發者預覽版本應於 2014 年 2014 月底發布,但截至 XNUMX 年底,尚未有任何套件出貨。

這項技術能否穩健地應用於「室內導航」應用領域仍有待觀察。由於藍牙訊號易受干擾因素影響,因此需要使用 iBeacon 訊號對相應區域進行強光照射,並結合房間平面圖進行三角測量計算位置。 MOKOSmart(室內導航 iBeacon SDK)以及 LabWerk 等多家製造商都提供了相應的解決方案,但作者尚未發現任何實際應用案例。

在開發與 iBeacon 互動的應用程式時,還必須考慮安全性和資料保護方面的問題。由於訊號的簡單性,iBeacon 很容易受到欺騙,這一點在開發過程中不應忽視。目前位置和基於使用者行為收集的運動軌跡等資料也需要高度保護。

 

作者——
黃永康的照片
黃玉坤
YK是MOKOSMART研發部門的資深產品經理,擁有十多年的智慧設備開發經驗。他擁有PMP和NPDP認證,並深諳如何協調跨職能團隊。他運用數據驅動的洞察力成功推出了40多款互聯產品。 YK擁有電子與工程背景,擅長將複雜的技術價值主張轉化為使用者友善的物聯網解決方案,適用於消費性電子和工業應用。
黃永康的照片
黃玉坤
YK是MOKOSMART研發部門的資深產品經理,擁有十多年的智慧設備開發經驗。他擁有PMP和NPDP認證,並深諳如何協調跨職能團隊。他運用數據驅動的洞察力成功推出了40多款互聯產品。 YK擁有電子與工程背景,擅長將複雜的技術價值主張轉化為使用者友善的物聯網解決方案,適用於消費性電子和工業應用。
分享這篇文章
使用 MOKOSmart loT 設備解決方案滿足您的連線需求!