Android BLE开发之Android手机搜索iBeacon基站
2016-04-07 15:38
495 查看
本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!
上次讲了Android手机与BLE终端之间的通信,而最常见的BLE终端应该是苹果公司倡导的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不太准。所以測距就没意义:
本文代码能够到这里下载:http://download.csdn.net/detail/hellogv/7269127,代码就不贴出来了,核心代码改自https://github.com/RadiusNetworks/android-ibeacon-service。
上次讲了Android手机与BLE终端之间的通信,而最常见的BLE终端应该是苹果公司倡导的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不太准。所以測距就没意义:
本文代码能够到这里下载:http://download.csdn.net/detail/hellogv/7269127,代码就不贴出来了,核心代码改自https://github.com/RadiusNetworks/android-ibeacon-service。
相关文章推荐
- 详解Android Material设计中阴影效果的实现方法
- AndroidStudio 文档自动提示突然消失,怎么解决?
- Android性能典范:拯救计划
- android 界面控件 textview 全解
- Shake动画实现
- android 操作数据库
- android自定义全屏dialog
- android模拟器之痛
- Android高级控件----AdapterView与Adapter
- Android 集成第三方的sdk
- 图片的缩放,平移——Matrix的使用
- Android获取栈顶程序
- zz :Android测试之Monkey
- zz:Android 测试工具Monkey & Monkeyrunner 使用方法
- Android之粘性广播理解
- zz:使用Monkeyrunner进行Android自动化的总结
- Android学习笔记之百度地图(驾车路线搜索及RouteOverlay步行路线搜索及RouteOverlay)
- zz:Android Monkeyrunner Test
- android开源框架学习---EventBus---使用例子
- Android 中Handler引起的内存泄露