关于Android连接低功耗蓝牙慢的问题
一、场景: 目前正在做一个小程序连接低功耗蓝牙板的功能。主要是用于硬件操作类。 二、描述: 1、使用完后,发现Android版本小程序在wx.createBLEConnection(OBJECT)下api不太稳定。连接时长有时候快,有时候慢。快的时候能达到正常的理想速度(1-1.5秒),慢的话能达到5-10秒。 尝试使用Android原生app,使用 BluetoothGatt mBluetoothGatt = mDevice.connectGatt(this.mContext, true, this); 进行连接,发现并没有达到小程序那么大的概率出现连接慢的问题。小程序连接蓝牙慢的概率会在10%左右,而使用原生app连接的话,最多2%左右,甚至更低。 不过原生app在尝试断开蓝牙后,有进行释放BluetoothGatt对象,如下 public void disconnect(){ mBluetoothGatt.disconnect(); mBluetoothGatt.discoverServices(); mBluetoothGatt.close(); mBluetoothGatt = null; } 多次尝试直接不释放BluetoothGatt对象的前提下,只是单纯的 mBluetoothGatt.disconnect(); 下次连接直接mBluetoothGatt.connect(); 同样会出现和小程序一样的大概率连接慢,甚至连不上的问题。 PS:蓝牙板的广播频率已经调成50毫秒一下了 2、第二个问题:连接蓝牙了,进行写动作,有延时200毫秒左右开始写特征值数据,经常会10008错误,不让写。而且调用wx.closeBLEConnection(OBJECT)会出现无法断开的现象,实际蓝牙还处在和手机连接中。此时无论如何操作都无法断开蓝牙,只能选择结束微信进程。 以上问题在IOS上未出现。 三、建议 希望小程序开发团队能抽空看下低功耗蓝牙的这个问题,我相信很大部分开发者在Android上都基本头大无助了,转而放弃小程序使用原生app去了,这是很遗憾的一件事。