Android提高之BLE開發(fā)Android手機搜索iBeacon基站
前面文章講述了Android手機與BLE終端之間的通信,而最常見的BLE終端應該是蘋果公司倡導的iBeacon基站。iBeacon技術基于BLE,它的特點是通過廣播對外發(fā)送消息,手機不需要連上iBeacon基站也能獲取它的信息,目前主要用來做室內(nèi)定位和營銷信息推送,在BLE發(fā)出的廣播里帶上帶上特定的信息從而被識別為iBeacon。在iOS里面使用iBeacon要經(jīng)過passbook注冊iBeacon的UUID和對應的文字簡介,而在Android上則無類似passbook這種系統(tǒng)級的后臺藍牙搜索服務,這類服務需要開發(fā)者自己搞定。這次就講講Android手機搜索基站和顯示iBeacon基站參數(shù)。
搜索iBeacon基站的不難,核心在于BluetoothAdapter.LeScanCallback()的onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord),而識別iBeacon的信息就在于scanRecord數(shù)組。按照https://github.com/RadiusNetworks/android-ibeacon-service/blob/master/src/main/java/com/radiusnetworks/ibeacon/IBeacon.java,識別是否iBeacon靠下面的紅字:
// AirLocate:
// 02 01 1a 1a ff 4c 00 02 15 # Apple's fixed iBeacon advertising prefix
// e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 # iBeacon profile uuid
// 00 00 # major
// 00 00 # minor
// c5 # The 2's complement of the calibrated Tx Power
同時要注意iBeacon的UUID和BLE的Service、Characteristic、Descriptor的UUID是沒關系,iBeacon的UUID是廣播的時候發(fā)出,是由Apple自己定義的標準,而Service、Characteristic、Descriptor必須是連上BLE終端后才得到,是BLE標準。
本文代碼運行結果如下,不斷變化rssi可以用來做距離判斷,不過這個模塊的txPower不太準,所以測距就沒意義:

本文代碼點此本站下載,代碼就不貼出來了,核心代碼點此本站下載。
感興趣的朋友可以下載本站代碼測試一下運行效果,希望對大家學習Android程序設計有一定的幫助。
相關文章
關于Android中自定義ClassLoader耗時問題的追查
熱修復和插件化是目前比較熱門的技術,要想更好的掌握它們需要了解ClassLoader,下面這篇文章主要給大家介紹了關于Android中自定義ClassLoader耗時問題追查的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧2018-06-06
Flutter實現(xiàn)頁面切換后保持原頁面狀態(tài)的3種方法
這篇文章主要給大家介紹了關于Flutter實現(xiàn)頁面切換后保持原頁面狀態(tài)的3種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Flutter具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-03-03
Android使用TextView實現(xiàn)無下劃線超鏈接的方法
這篇文章主要介紹了Android使用TextView實現(xiàn)無下劃線超鏈接的方法,結合實例形式分析了Android中TextView超鏈接去除下劃線的相關實現(xiàn)技巧與注意事項,需要的朋友可以參考下2016-08-08
Android Studio Gradle 更換阿里云鏡像的方法
這篇文章主要介紹了Android Studio Gradle 更換阿里云鏡像的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
Android內(nèi)核源碼 在Ubuntu上下載,編譯,安裝
本文主要介紹Android內(nèi)核源碼,想學習深入研究Android的朋友肯定要看看Android內(nèi)核知識的,這里對下載Android內(nèi)核源代碼的下載,安裝,編譯做了詳細的介紹,有興趣的小伙伴可以參考下2016-08-08

