android 蓝牙开发遇到的问题,部分手机出现第一次连接蓝牙正常,但第二次开始就连接不上蓝牙。
首先要知道蓝牙有两种类型,一种是经典蓝牙模块,一般是用于传输数据量大,比较复杂数据的;另一种则是低功耗蓝牙(BLE),一般用于简单,快速传输数据。多用了手表,耳机,键盘等设备。
开发时遇到部分手机连接不上蓝牙,或者说连接上一次后断开就连不上或连接很慢。
很有可能是经典蓝牙模块,要配对,你可以用手机自带(进设置去边)的蓝牙去连接,会弹出配对提示框。
解决办法:
1、在调用连接方法connectGatt时,应确保设备未在进行搜索状态。 如果正在进行搜索操作,则会大幅降低连接尝试的速度,并增加连接失败的可能性。所以在调用连接时先调用暂停搜索stopLeScan。
即调用顺序为
mBluetoothAdapter.stopLeScan(leCallBack) //停止搜索
device.connectGatt //连接
如果先调用connectGatt,后调用stopLeScan。则会出现第一次能连上,第二次开始就连接不上或连接慢。
2,然后可以在部分地方做延迟处理。在扫描时startLeScan,在连接时connect,等地方做延迟,这样做的原因可能由于部分手机释放资源比较慢。
3,断开连接后需要调用mBluetoothGatt的close()方法。并把mBluetoothGatt = null设置为空。
4,尽量在正在连接蓝牙的时侯不要做其他操作。可以加个蒙板呀什么的。