前言html
本文将用一个简单的例子介绍如何用安卓手机的蓝牙功能来周期性搜索周边蓝牙节点的信号强度,为有意玩一下蓝牙室内定位的爱好者提供一点小的思路。(若是是想用安卓手机和蓝牙模块通讯来实现遥控功能的话,能够参考:http://www.cnblogs.com/zjutlitao/p/4231635.html;想用笔记本和蓝牙模块通讯来实现遥控功能的话能够参考:http://www.cnblogs.com/zjutlitao/p/3886826.html;若是是想使用笔记本的蓝牙来作蓝牙定位的话,哈哈,建议放弃...)git
效果github
按期扫描周边蓝牙设备-->根据信号强度绘制大小不一样的圆圈(对于开发人员来讲,引入如何搜索到BT信号强度LZ以为应该很足够啦,而后就能够自由发挥啦)函数
简介动画
代码参考:https://github.com/beautifulzzzz/Android/commit/e1d12e756d8e7c9efd9c89fb084c3f100b451427spa
【成员变量】SurfaceView空间用来绘制动画效果,BluetoothAdapter用来获取蓝牙设备,接下来依次是蓝牙设备信息向量、蓝牙设备信号强弱向量、画笔向量~线程
【初始化】在onCreate函数中执行初始化相关操做主要有:①画笔初始化;②surfaceview初始化并设置回调函数(由于线程里没法进行界面更新,因此要把消息从线程里发送出来在消息句柄里进行处理,因此咱们在37~65行会看到一个消息句柄,用来接收消息并根据消息内容重绘surfaceview)设计
【启动搜索】该函数供每次触发搜索使用,其中第一次触发位于182行的menuOptions按钮事件中,而后每次在绘制结束后再次调用doDiscovery进行周期性搜索。htm
【搜索信息并存储】当启动搜索以后,若是一旦搜索到设备就会触发BleetoothDevice.ACTION_FOUND消息,而后将蓝牙设备的名字和MAC地址放进向量保存,信号强度rssi放进RSSI向量保存;当搜索结束后会触发BluetoothAdapter.ACTION_DISCOVERY_FINISHED,在这里代表一个搜索周期结束,经过Bundle发送msg,通知绘图消息句柄,进行绘图。blog
【绘图消息句柄处理bundle消息并刷新】当上面完成一个搜索周期后会发送bundle消息来触发绘图(以下45~48行),绘图完毕调用doDiscovery再次搜索,如此循环往复。
后记
当你们知道了如何周期性得到周围蓝牙信号强度后,再结合市场上销售的蓝牙节点根据定位技术就能设计出特定应用场景的室内定位了~但愿该文对你们有帮助!!!☆⌒(*^-゜)v
相关连接
本文连接:http://www.cnblogs.com/zjutlitao/p/4314096.html