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

作者:shichen2014 时间:2023-05-19 18:58:15 

前面文章讲述了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提高之BLE开发Android手机搜索iBeacon基站

本文代码点此本站下载,代码就不贴出来了,核心代码点此本站下载。

感兴趣的朋友可以下载本站代码测试一下运行效果,希望对大家学习Android程序设计有一定的帮助。

标签:Android
0
投稿

猜你喜欢

  • java中Date类和Strng类的灵活转化

    2022-12-09 07:47:24
  • Android应用内悬浮窗的实现方案示例

    2022-05-07 20:29:24
  • EditPlus运行java时从键盘输入数据的操作方法

    2023-04-16 21:18:45
  • Java设计模式之java装饰者模式详解

    2023-10-27 06:17:04
  • C#中Lambda表达式的用法

    2022-07-29 17:29:56
  • Mybatis中TypeAliasRegistry的作用及使用方法

    2023-06-27 19:21:32
  • 深入多线程之:用Wait与Pulse模拟一些同步构造的应用详解

    2021-07-09 06:14:19
  • spring MVC实践需要注意的地方

    2023-02-07 00:33:07
  • spring cloud将spring boot服务注册到Eureka Server上的方法

    2023-12-08 19:42:09
  • Java利用Jackson序列化实现数据脱敏详解

    2023-12-22 17:47:38
  • flutter 怎么实现app整体灰色效果

    2023-01-24 21:23:22
  • 基于Ok+Rxjava+retrofit实现断点续传下载

    2021-08-27 02:21:49
  • 带着问题读CLR via C#(笔记二)类型基础

    2022-01-31 07:31:08
  • Git工具 conflict冲突问题解决方案

    2023-07-27 10:27:30
  • Spring中bean集合注入的方法详解

    2022-08-26 07:37:41
  • 使用Java实现串口通信

    2023-02-13 05:45:02
  • 浅谈spring的重试机制无效@Retryable@EnableRetry

    2021-12-12 10:42:57
  • Java数据结构之红黑树的真正理解

    2022-07-16 01:36:16
  • spring bean.xml文件p标签使用报错的解决

    2022-03-12 23:16:16
  • WCF实现进程间管道通信Demo分享

    2022-10-22 04:20:06
  • asp之家 软件编程 m.aspxhome.com