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程序设计有一定的帮助。
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java中Date类和Strng类的灵活转化
Android应用内悬浮窗的实现方案示例
![](https://img.aspxhome.com/file/2023/3/139173_0s.gif)
EditPlus运行java时从键盘输入数据的操作方法
![](https://img.aspxhome.com/file/2023/8/113428_0s.png)
Java设计模式之java装饰者模式详解
![](https://img.aspxhome.com/file/2023/6/68726_0s.png)
C#中Lambda表达式的用法
Mybatis中TypeAliasRegistry的作用及使用方法
深入多线程之:用Wait与Pulse模拟一些同步构造的应用详解
![](https://img.aspxhome.com/file/2023/2/96312_0s.png)
spring MVC实践需要注意的地方
spring cloud将spring boot服务注册到Eureka Server上的方法
![](https://img.aspxhome.com/file/2023/7/60837_0s.png)
Java利用Jackson序列化实现数据脱敏详解
![](https://img.aspxhome.com/file/2023/2/110812_0s.png)
flutter 怎么实现app整体灰色效果
![](https://img.aspxhome.com/file/2023/7/137727_0s.jpg)
基于Ok+Rxjava+retrofit实现断点续传下载
![](https://img.aspxhome.com/file/2023/5/108435_0s.jpg)
带着问题读CLR via C#(笔记二)类型基础
![](https://img.aspxhome.com/file/2023/3/82143_0s.png)
Git工具 conflict冲突问题解决方案
![](https://img.aspxhome.com/file/2023/1/57911_0s.png)
Spring中bean集合注入的方法详解
![](https://img.aspxhome.com/file/2023/6/77146_0s.png)
使用Java实现串口通信
![](https://img.aspxhome.com/file/2023/5/87185_0s.jpg)
浅谈spring的重试机制无效@Retryable@EnableRetry
![](https://img.aspxhome.com/file/2023/5/62165_0s.jpg)
Java数据结构之红黑树的真正理解
![](https://img.aspxhome.com/file/2023/9/78369_0s.png)
spring bean.xml文件p标签使用报错的解决
WCF实现进程间管道通信Demo分享
![](https://img.aspxhome.com/file/2023/4/108704_0s.jpg)