我最近在实习 关于货车尾板的一个android项目的功能补充

工程师师傅要求是app控制尾板时,要判断蓝牙信号值大小,超出范围不能控制,具体值需要调试确定声音需求,打开APP后,默认设置声音到最大,APP需要根据主控器发来的报文(后续会修改代码),选择不同频率的声音播放

我也完成了最后的要求界面如下:

来说说具体如何实现,又有什么困难,我学到了什么

我先完成的是第一个功能(app控制尾板时,要判断蓝牙信号值大小,超出范围不能控制,具体值需要调试确定)

​ app控制围板 蓝牙信号这项目里都已经有全部的代码了,我需要获取rssi值且要实时获取rssi值 ,判断rssi>=-60还是<-60

​ 这两者区分了是否可以实现按钮的硬件功能,也区分了是否会发出报警(raw\Warning.wav)

​ 也遇到点小问题,蓝牙类的可以参考一下!!!!bluetoothmanage类里面有写功能getriss 通过功能调用直接调取蓝牙值来给按钮生效与否做判断,结果就是不好的,根本无法实现要求

​ 突发奇想在ui层放一个text文本实时反应蓝牙信号值,如果是蓝牙信号值的问题更直观更明显(因为给的参考值是-60 >=-60就可以触发按钮 否则不触发也不警报)如果没有测试文本那么肯定难以判断怎么做到大概三米范围能不调用按钮

​ 最后通过文本显示我发现了问题 蓝牙获取的是getadrees时的信号,想要连上蓝牙就得信号不错,连上一瞬间时蓝牙信号肯定是好的,那就无法正常使用了,毕竟在现视场景中使用这个app蓝牙是肯定会实时更新的,所以我加上了实时更新蓝牙高频率刷新蓝牙值,通过text实时监控蓝牙信号情况,为下个功能的完成埋下了伏笔

​ 插曲一下这里出了个小问题,由于我不怎么会使用Git控制版本,所以我自己做的小功能并不能提交到代码库中,不利于后期的维护,所以工程师教我下了一个beyong compare软件,用来对比代码实现代码转移,把我写的demo改动转移进工程师给我的demo

当然我也学会了使用git vscode还是andorid中都学会了 这不仅仅离不开工程师的帮助还有对面的985高材生黄sir的帮助

其次完成了跟据报文来判断播放声音的功能

首先硬件的字节16 下标15会传来数字 00 或者01

如果是01 代码应该实现播放warning2.wav 00则播放warning.wav

以下是实现代码的思路流程

​ 所以在做此功能的时候遇到了许许多多的问题

​ 首先第一次尝试的时候就遇到加上判断代码就无法出发声音的问题

​ 其后又遇到了脸上蓝牙就直接开始警报的问题

​ 最后还遇上了切换警报的时候warning2及其不稳定以及warning2发声后不再能触发别的warning

解决了哈哈

​ 加上判断代码就无法出发声音是因为业务逻辑各写各的 riss判断按钮是否生效而分分报文判断使用哪个音频没有加进ui和viewmodel的逻辑中

​ 蓝牙连接上就报警是因为连接上硬件的蓝牙,硬件就会发送一条16位为00的报文,导致系统误判直接开始报警,那么解决方法就是给分析代码加上一层限制,只有在按下按钮时才会分析报文

​ 声音2的不稳定是因为报文发送不稳定,经常以00 01 00 01 00 01这种格式发送,那么设置一个声音2强制播放完毕和新的逻辑概念:报文01只播放声音2,且不可打断,报文00只播放声音1且可以被打断 声音2播放完毕后会查找上一个接收的报文根据00 01继续新的播放

到此目前貌似写完啦