Android提高之BLE开发Android手机搜索iBeacon基站

2022-10-19,,,

这篇文章主要介绍了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(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程序设计有一定的帮助。

您可能感兴趣的文章:

  • Android检测IBeacon热点的方法
  • android获取ibeacon列表的方法
  • Android蓝牙开发深入解析
  • 详解Android——蓝牙技术 带你实现终端间数据传输
  • Android Bluetooth蓝牙技术使用流程详解
  • Android单片机与蓝牙模块通信实例代码
  • 分享Android 蓝牙4.0(ble)开发的解决方案
  • android实现蓝牙文件发送的实例代码,支持多种机型
  • Android手机通过蓝牙连接佳博打印机的实例代码
  • Android基于ibeacon实现蓝牙考勤功能

《Android提高之BLE开发Android手机搜索iBeacon基站.doc》

下载本文的Word格式文档,以方便收藏与打印。