本文来自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开发之Android手机搜索iBeacon基站相关推荐

  1. 镜像处理坐标 android,Android应用开发之Android重写ImageView实现图片镜像效果的代码教程...

    本文将带你了解Android应用开发之Android重写ImageView实现图片镜像效果的代码教程,希望本文对大家学Android有所帮助. 前两天朋友问我一个问题,如何实现从手机系统相册加载一张图 ...

  2. Android关掉多个activity,Android应用开发之Android Activity栈管理 制定关闭某一个Activity,关闭所有Activit...

    本文将带你了解Android应用开发之Android Activity栈管理  制定关闭某一个Activity,关闭所有Activit,希望本文对大家学Android有所帮助. 系统Api :打开新的 ...

  3. android图片保存形式,Android应用开发之Android ScrollView截图和图片保存到相册的方式...

    本文将带你了解Android应用开发之Android ScrollView截图和图片保存到相册的方式,希望本文对大家学Android有所帮助. 1.1首先来看你一种截取屏幕,这种代码有缺陷,只能截取一 ...

  4. android 开发art,Android应用开发之Android 系统启动原理(art 虚拟机)

    本文将带你了解Android应用开发之Android 系统启动原理(art 虚拟机),希望本文对大家学Android有所帮助. Android   系统启动原理(art 虚拟机) 一.虚拟机的启动 A ...

  5. android 电量详情,Android应用开发之Android 8.0 电池-)耗电详情获取方法

    本文将带你了解Android应用开发之Android 8.0 电池-)耗电详情获取方法,希望本文对大家学Android有所帮助. Android 8.0 电池-)耗电详情获取方法 主要介绍UI位置和基 ...

  6. android 接口实现方法,Android应用开发之Android 请求网络接口实现方法

    本文将带你了解Android应用开发之Android 请求网络接口实现方法,希望本文对大家学Android有所帮助. public   class Fragment01 extends Fragmen ...

  7. android显示通知图标大全,Android应用开发之android 桌面APP应用图标显示通知消息的数量显示与去除...

    本文将带你了解Android应用开发之android 桌面APP应用图标显示通知消息的数量显示与去除,希望本文对大家学Android有所帮助. android   桌面APP应用图标显示通知消息的数量 ...

  8. android离线语音开发,Android应用开发之Android 云之声离线语音合成

    本文将带你了解Android应用开发之Android 云之声离线语音合成,希望本文对大家学Android有所帮助. 离线语音解析 public class SpeechUtilOffline impl ...

  9. android vr播放器 开发,Android应用开发之Android VR Player(全景视频播放器)- ExoPlayer播放器MPEG-DASH视频播放...

    本文将带你了解Android应用开发之Android VR Player(全景视频播放器)- ExoPlayer播放器MPEG-DASH视频播放,希望本文对大家学Android有所帮助. Androi ...

最新文章

  1. iOS 开发音视频流[1]---FFmpeg
  2. Cookie简单使用方法
  3. PHP导出MySQL数据字典
  4. 计算机键盘音乐好汉歌,好汉歌 MIDI File Download :: MidiShow
  5. 03_dbcp数据源依赖jar包,DBCP中API介绍,不同过dbcp方式使用dbcp数据库连接池,通过配置文件使用dbcp数据库连接池
  6. Zabbix 3.2.6 升级到 Zabbix 3.4.3
  7. snmpd服务无法更改默认端口
  8. input中的name,value以及label中的for
  9. 综述 | 跨语言自然语言处理论文汇总
  10. PAT 7-14 公路村村通
  11. 【总结——HTTP协议】
  12. SQL常用语句(普通查询+条件查询)
  13. mac中插入带圆圈数字序号①②③
  14. 大话数据结构-单链表勘误,计划调整
  15. android 开机自动启动服务,Android实现开机自动启动Service或app的方法
  16. 9大代理服务器软件的比较与分析之校园局域网代理蝴蝶
  17. 声网连麦+直播+视频+游戏“史上最强”社交直播方案 打造陌陌全新8.0改版
  18. 结构体与动态内存(5.11)
  19. 解决C/C++报错error: cannot pass objects of non-trivially-copyable type ‘std::string’问题
  20. 学习-编写判断一个正整数是否为素数的函数

热门文章

  1. spack install报错/tmp/ccBDQNaB.s: Assembler message:
  2. 自己写的一键生成小楼房的插件。
  3. html中从右往左写的文字格式,用Word 文档怎么更改写字方向从右到左写?
  4. Git安装与使用及一般规范
  5. pandas基本功能
  6. 团队项目:我要当管家
  7. 198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报
  8. 腾讯云数据万象CI助力企业解决图片处理需求!
  9. 二分图最大匹配及最大权匹配
  10. 华为手机衰退后,消费者连买手机的欲望都没有了?