前言: 由于最近的项目里有对接蓝牙硬件设备的需求。
大体分为传统蓝牙和BLE蓝牙两种。
我和同事各负责一种蓝牙封装。
由于会连接多种硬件设备,所以我的做法是把传统蓝牙的封装代码和硬件设备的一些解析jar包和so包统一打一个model包方便管理。
以后加新的设备也统一加再model包里。
定义的方法不多。
之所以回调在方法里传,是考虑到一个页面会连接多个设备,传不同的callback,耦合性会更好。
另外,具体的btmanager在连接和搜索的时候要根据状态做好多次点击连接的判断。
但是提示可以放到页面里去处理,这样模块的功能性更单一,耦合性更好。
还有就是连接上设备之后,读取socket,不要把蓝牙连接状态在读取数据的地方赋值,连接状态只负责蓝牙连接那一块的赋值。
难点就是自动配对在不同设备上的设配问题。
自动配对,就是在页面开一个服务,然后destory的时候销毁。
像网上说的通过反射调用配对方法或者直接调用配对方法,经我测试在不同的设备上的反应都不同,应该是不同厂商的系统被改写。
简单来说就是不能用。
但是如果页面有多个设备要连接。并且ping码不同的话。
自动配对代码就不要使用了,会出现自动配对但是ping码不对导致不能配对并且不能连接设备的情况。
如果只有单一设备要连接。 自动配对代码加入项目之前,需要多个手机进行测试。
暂时就没有加入这一功能了。
不加配对代码的话。
小米手机上是会弹出提示窗,点确认配对。就会自动配对成功。
配对成功后以后连接会更快。1秒左右。
有的手机,不会弹窗提示,就始终以未配对情况进行连接,连接速度在5秒左右。
网友评论