[安卓] 13、安卓蓝牙定位(一)——如何周期性获得蓝牙节点信号强度?
前言
本文将用一个简单的例子介绍如何用安卓手机的蓝牙功能来周期性搜索周边蓝牙节点的信号强度,为有意玩一下蓝牙室内定位的爱好者提供一点小的思路。(如果是想用安卓手机和蓝牙模块通信来实现遥控功能的话,可以参考:http://www.cnblogs.com/zjutlitao/p/4231635.html;想用笔记本和蓝牙模块通信来实现遥控功能的话可以参考:http://www.cnblogs.com/zjutlitao/p/3886826.html;如果是想使用笔记本的蓝牙来做蓝牙定位的话,哈哈,建议放弃...)
效果
定期扫描周边蓝牙设备-->根据信号强度绘制大小不同的圆圈(对于开发人员来说,引入如何搜索到BT信号强度LZ觉得应该很足够啦,然后就可以自由发挥啦)
简介
代码参考:https://github.com/beautifulzzzz/Android/commit/e1d12e756d8e7c9efd9c89fb084c3f100b451427
【成员变量】SurfaceView空间用来绘制动画效果,BluetoothAdapter用来获取蓝牙设备,接下来依次是蓝牙设备信息向量、蓝牙设备信号强弱向量、画笔向量~
【初始化】在onCreate函数中执行初始化相关操作主要有:①画笔初始化;②surfaceview初始化并设置回调函数(因为线程里无法进行界面更新,所以要把消息从线程里发送出来在消息句柄里进行处理,所以我们在37~65行会看到一个消息句柄,用来接收消息并根据消息内容重绘surfaceview)
【启动搜索】该函数供每次触发搜索使用,其中第一次触发位于182行的menuOptions按钮事件中,然后每次在绘制结束后再次调用doDiscovery进行周期性搜索。
【搜索信息并存储】当启动搜索之后,如果一旦搜索到设备就会触发BleetoothDevice.ACTION_FOUND消息,然后将蓝牙设备的名字和MAC地址放进向量保存,信号强度rssi放进RSSI向量保存;当搜索结束后会触发BluetoothAdapter.ACTION_DISCOVERY_FINISHED,在这里表明一个搜索周期结束,通过Bundle发送msg,通知绘图消息句柄,进行绘图。
【绘图消息句柄处理bundle消息并刷新】当上面完成一个搜索周期后会发送bundle消息来触发绘图(如下45~48行),绘图完毕调用doDiscovery再次搜索,如此循环往复。
后记
当大家知道了如何周期性获得周围蓝牙信号强度后,再结合市场上销售的蓝牙节点根据定位技术就能设计出特定应用场景的室内定位了~希望该文对大家有帮助!!!☆⌒(*^-゜)v
相关链接
本文链接:http://www.cnblogs.com/zjutlitao/p/4314096.html
更多精彩:http://www.cnblogs.com/zjutlitao/p/
工程代码:http://pan.baidu.com/s/1mgzcW4o
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2014-03-04 [ACM_数学] Fibonacci Nim(另类取石子,2-4组合游戏)