Android BLE開發之Android手機搜尋iBeacon基站
上次講了Android手機與BLE終端之間的通訊,而最常見的BLE終端應該是蘋果公司倡導的iBeacon基站。iBeacon技術基於BLE,它的特點是通過廣播對外發送訊息,手機不需要連上iBeacon基站也能獲取它的資訊,目前主要用來做室內定位和營銷資訊推送,在BLE發出的廣播裡帶上帶上特定的資訊從而被識別為iBeacon。在iOS裡面使用iBeacon要經過passbook註冊iBeacon的UUID和對應的文字簡介,而在Android上則無類似passbook這種系統級的後臺藍芽搜尋服務,這類服務需要開發者自己搞定。這次就講講Android手機搜尋基站和顯示iBeacon基站引數。
搜尋iBeacon基站的不難,核心在於BluetoothAdapter.LeScanCallback()的onLeScan
// 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是廣播的時候發出,是由Apple自己定義的標準,而Service、Characteristic、Descriptor必須是連上BLE終端後才得到,是BLE標準。
本文程式碼執行結果如下,不斷變化rssi可以用來做距離判斷,不過這個模組的txPower不太準,所以測距就沒意義:
本文程式碼可以到這裡下載: