Android 蓝牙开发的坑

read failed return -1

蓝牙连接中最关键的一步connect最容易出问题。这里面有几个坑,

0Android studio 模拟器没有蓝牙 因此会报adapter 不存在, 换成实机调试即可

1connect必须放到单独的线程进行

2获取socket的方式有多种,这也是问题的一个原因。可以先根据sdk版本选择insecureRfcomm还是Rfcomm,try connect 如果失败再使用反射机制进行连接。反射机制连接也有带 UUID的和不带UUID的。

我最后的代码里面实现的时候就是不断地try connect。一种方法不行就换下一种。最后使用了不带UUID的反射机制完成了100%连接。

3如果结果不对,连接不上,请调试的时候先检查device socket是否为null

4先在手机上打开蓝牙 手动点设备配对。配对完成后再在app中connect。

5注意使用的变量的生命周期 可能存在bug。