Android提高之BLE開發(fā)Android手機(jī)搜索iBeacon基站
前面文章講述了Android手機(jī)與BLE終端之間的通信,而最常見的BLE終端應(yīng)該是蘋果公司倡導(dǎo)的iBeacon基站。iBeacon技術(shù)基于BLE,它的特點(diǎn)是通過(guò)廣播對(duì)外發(fā)送消息,手機(jī)不需要連上iBeacon基站也能獲取它的信息,目前主要用來(lái)做室內(nèi)定位和營(yíng)銷信息推送,在BLE發(fā)出的廣播里帶上帶上特定的信息從而被識(shí)別為iBeacon。在iOS里面使用iBeacon要經(jīng)過(guò)passbook注冊(cè)iBeacon的UUID和對(duì)應(yīng)的文字簡(jiǎn)介,而在Android上則無(wú)類似passbook這種系統(tǒng)級(jí)的后臺(tái)藍(lán)牙搜索服務(wù),這類服務(wù)需要開發(fā)者自己搞定。這次就講講Android手機(jī)搜索基站和顯示iBeacon基站參數(shù)。
搜索iBeacon基站的不難,核心在于BluetoothAdapter.LeScanCallback()的onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord),而識(shí)別iBeacon的信息就在于scanRecord數(shù)組。按照https://github.com/RadiusNetworks/android-ibeacon-service/blob/master/src/main/java/com/radiusnetworks/ibeacon/IBeacon.java,識(shí)別是否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
同時(shí)要注意iBeacon的UUID和BLE的Service、Characteristic、Descriptor的UUID是沒關(guān)系,iBeacon的UUID是廣播的時(shí)候發(fā)出,是由Apple自己定義的標(biāo)準(zhǔn),而Service、Characteristic、Descriptor必須是連上BLE終端后才得到,是BLE標(biāo)準(zhǔn)。
本文代碼運(yùn)行結(jié)果如下,不斷變化rssi可以用來(lái)做距離判斷,不過(guò)這個(gè)模塊的txPower不太準(zhǔn),所以測(cè)距就沒意義:

本文代碼點(diǎn)此本站下載,代碼就不貼出來(lái)了,核心代碼點(diǎn)此本站下載。
感興趣的朋友可以下載本站代碼測(cè)試一下運(yùn)行效果,希望對(duì)大家學(xué)習(xí)Android程序設(shè)計(jì)有一定的幫助。
- Android檢測(cè)IBeacon熱點(diǎn)的方法
- android獲取ibeacon列表的方法
- Android藍(lán)牙開發(fā)深入解析
- 詳解Android——藍(lán)牙技術(shù) 帶你實(shí)現(xiàn)終端間數(shù)據(jù)傳輸
- Android Bluetooth藍(lán)牙技術(shù)使用流程詳解
- Android單片機(jī)與藍(lán)牙模塊通信實(shí)例代碼
- 分享Android 藍(lán)牙4.0(ble)開發(fā)的解決方案
- android實(shí)現(xiàn)藍(lán)牙文件發(fā)送的實(shí)例代碼,支持多種機(jī)型
- Android手機(jī)通過(guò)藍(lán)牙連接佳博打印機(jī)的實(shí)例代碼
- Android基于ibeacon實(shí)現(xiàn)藍(lán)牙考勤功能
相關(guān)文章
關(guān)于Android中自定義ClassLoader耗時(shí)問(wèn)題的追查
熱修復(fù)和插件化是目前比較熱門的技術(shù),要想更好的掌握它們需要了解ClassLoader,下面這篇文章主要給大家介紹了關(guān)于Android中自定義ClassLoader耗時(shí)問(wèn)題追查的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧2018-06-06
Flutter實(shí)現(xiàn)頁(yè)面切換后保持原頁(yè)面狀態(tài)的3種方法
這篇文章主要給大家介紹了關(guān)于Flutter實(shí)現(xiàn)頁(yè)面切換后保持原頁(yè)面狀態(tài)的3種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Android使用TextView實(shí)現(xiàn)無(wú)下劃線超鏈接的方法
這篇文章主要介紹了Android使用TextView實(shí)現(xiàn)無(wú)下劃線超鏈接的方法,結(jié)合實(shí)例形式分析了Android中TextView超鏈接去除下劃線的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下2016-08-08
Android CardView詳解及使用方法和實(shí)例
這篇文章主要介紹了Android CardView詳解及使用方法和實(shí)例的相關(guān)資料,這里附有實(shí)例代碼及實(shí)現(xiàn)效果圖,需要的朋友可以參考下2016-12-12
Android實(shí)現(xiàn)Path平滑的涂鴉效果實(shí)例
這篇文章主要給大家介紹了關(guān)于Android實(shí)現(xiàn)Path平滑涂鴉效果的相關(guān)資料,通過(guò)本文介紹的方法修改后會(huì)讓線條平滑很多,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
Android Studio Gradle 更換阿里云鏡像的方法
這篇文章主要介紹了Android Studio Gradle 更換阿里云鏡像的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Android內(nèi)核源碼 在Ubuntu上下載,編譯,安裝
本文主要介紹Android內(nèi)核源碼,想學(xué)習(xí)深入研究Android的朋友肯定要看看Android內(nèi)核知識(shí)的,這里對(duì)下載Android內(nèi)核源代碼的下載,安裝,編譯做了詳細(xì)的介紹,有興趣的小伙伴可以參考下2016-08-08

