天天看點

Android BLE開發之Android手機搜尋iBeacon基站

iBeacon技術基于BLE。它的特點是通過廣播對外發送消息。手機不須要連上iBeacon基站也能擷取它的資訊。眼下主要用來做室内定位和營銷資訊推送,在BLE發出的廣播裡帶上帶上特定的資訊進而被識别為iBeacon。在iOS裡面使用iBeacon要經過passbook注冊iBeacon的UUID和相應的文字簡單介紹。而在Android上則無相似passbook這樣的系統級的背景藍牙搜尋服務,這類服務須要開發人員自己搞定。這次就講講Android手機搜尋基站和顯示iBeacon基站參數。

搜尋iBeacon基站的不難,核心在于BluetoothAdapter.LeScanCallback()的onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord),而識别iBeacon的資訊就在于scanRecord數組。依照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是廣播的時候發出,是由Apple自定義的标準,而Service、Characteristic、Descriptor必須是連上BLE終端後才得到,是BLE标準。

本文代碼執行結果例如以下,不斷變化rssi能夠用來做距離推斷。隻是這個子產品的txPower不太準。是以測距就沒意義:

Android BLE開發之Android手機搜尋iBeacon基站

本文轉自mfrbuaa部落格園部落格,原文連結:http://www.cnblogs.com/mfrbuaa/p/5363875.html,如需轉載請自行聯系原作者  

繼續閱讀