天天看点

[安卓] 13、安卓蓝牙定位(一)——如何周期性获得蓝牙节点信号强度?

前言

效果

定期扫描周边蓝牙设备-->根据信号强度绘制大小不同的圆圈(对于开发人员来说,引入如何搜索到BT信号强度LZ觉得应该很足够啦,然后就可以自由发挥啦)

[安卓] 13、安卓蓝牙定位(一)——如何周期性获得蓝牙节点信号强度?

简介

【成员变量】SurfaceView空间用来绘制动画效果,BluetoothAdapter用来获取蓝牙设备,接下来依次是蓝牙设备信息向量、蓝牙设备信号强弱向量、画笔向量~

[安卓] 13、安卓蓝牙定位(一)——如何周期性获得蓝牙节点信号强度?

【初始化】在onCreate函数中执行初始化相关操作主要有:①画笔初始化;②surfaceview初始化并设置回调函数(因为线程里无法进行界面更新,所以要把消息从线程里发送出来在消息句柄里进行处理,所以我们在37~65行会看到一个消息句柄,用来接收消息并根据消息内容重绘surfaceview)

[安卓] 13、安卓蓝牙定位(一)——如何周期性获得蓝牙节点信号强度?

【启动搜索】该函数供每次触发搜索使用,其中第一次触发位于182行的menuOptions按钮事件中,然后每次在绘制结束后再次调用doDiscovery进行周期性搜索。

[安卓] 13、安卓蓝牙定位(一)——如何周期性获得蓝牙节点信号强度?

【搜索信息并存储】当启动搜索之后,如果一旦搜索到设备就会触发BleetoothDevice.ACTION_FOUND消息,然后将蓝牙设备的名字和MAC地址放进向量保存,信号强度rssi放进RSSI向量保存;当搜索结束后会触发BluetoothAdapter.ACTION_DISCOVERY_FINISHED,在这里表明一个搜索周期结束,通过Bundle发送msg,通知绘图消息句柄,进行绘图。

[安卓] 13、安卓蓝牙定位(一)——如何周期性获得蓝牙节点信号强度?

【绘图消息句柄处理bundle消息并刷新】当上面完成一个搜索周期后会发送bundle消息来触发绘图(如下45~48行),绘图完毕调用doDiscovery再次搜索,如此循环往复。

[安卓] 13、安卓蓝牙定位(一)——如何周期性获得蓝牙节点信号强度?

后记

当大家知道了如何周期性获得周围蓝牙信号强度后,再结合市场上销售的蓝牙节点根据定位技术就能设计出特定应用场景的室内定位了~希望该文对大家有帮助!!!⌒(*^-゜)v

相关链接

本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/4314096.html,如需转载请自行联系原作者

继续阅读