android蓝牙开发过程中遇到的问题(一)

2019-04-15 15:49发布

最近在做的项目需要通过蓝牙与单片机进行交互。功能主要包括,通过android设备控制单片机开始、停止工作,接受单片机发送的文件,删除单片机文件系统中的文件。单片机的开发进展特别慢,刚开始领导的意思是与硬件同步开发,争取在硬件开发完成的时候软件也能发版,事实证明是不可能的。开发过程中遇到很多小问题,在这里总结一下。 1、由于单片机需要使用C或者C++来开发,所以android项目中经常需要添加一些.so文件,再通过Java代码去调用其中的native方法。在这个过程中需要注意一个细节,当其他工程师给你.so文件时会另外告知你调用该文件的Java类路径,这个时候需要确保你新建的类的路径与给你的一致。有时候我们可能会忽略这点,只是使用了相同的类名,结果当然是无法调用成功的。 2、应用使用后台线程自动连接蓝牙,这样一定程度的提升了用户体验,但在使用过程中发现如果要连接的设备还没有与当前设备配对的话需要先进行配对操作,网上提供了很多自动配对蓝牙设备的Demo,经测试可用性不是很好。原因一、蓝牙设备如需验证密码的话需要为用户提供输入密码的接口。原因二、自动配对蓝牙设备主要是使用反射来完成,但有些android设备即使是使用反射来验证密码也会弹出对话框(弹出后自动关闭)。 3、使用后台自动连接蓝牙时遇到一个小问题,因为连接蓝牙之前需要先执行cancelDiscovery()方法来取消搜索,此时我们手动打开设置去搜索可连接的设备时会发现搜索不到任何设备,用户体验不佳。解决办法为,如果监听到搜索附近可用蓝牙设备广播,则停止自动连接操作。