记一个Android connectGatt 三参数方法无法连接BLE设备的问题

    公司有一款蓝牙血压计,是双模的.即支持蓝牙2.0和蓝牙4.0连接. 以前代码里只是连接2.0来用.现在要求加入4.0连接 使用厂家demo连接,死活连不上.排查许久 发现是connectGatt方法的问题

demo代码 使用的是三参数方法 没有判断系统版本

remoteDevice.connectGatt(mContext, true, bluetoothGattCallback);

改为

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    mBluetoothGatt = device.connectGatt(context, false, mGattCallback, BluetoothDevice.TRANSPORT_LE, BluetoothDevice.PHY_LE_1M_MASK);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
    mBluetoothGatt = device.connectGatt(context, false, mGattCallback, BluetoothDevice.TRANSPORT_LE);
} else {
    mBluetoothGatt = device.connectGatt(context, false, mGattCallback);
}

成功连接
贴一个此方法的详细注释
来源于简书-七零八落问号

 /**
  * 以客户端的身份连接到该设备托管的GATT服务器
  *
  * @param autoConnect:自动连接,设备不可用时会不断尝试重连。
  *
  * @param callback:   BluetoothGattCallback实例,用于接收异步回调
  *
  * @param transport:  GATT连接到双模设备的首选传输模式:
  *                     1:TRANSPORT_AUTO   自动选择 (默认值)
  *                     2:TRANSPORT_BREDR  BR/EDR 传统蓝牙
  *                     3:TRANSPORT_LE     LE 低耗蓝牙
  *
  * @param phy:        PHY物理层的模式选择:
  *                     1:PHY_LE_1M_MASK:
  *                        默认值,LE设备强制要求支持的模式,
  *                        符号速率为1M/s,未编码。
  *                     2:PHY_LE_2M_MASK:
  *                        符号速率为2M/s,未编码,
  *                        用于 蓝牙5 的 "2x speed" 2倍速率。
  *                     3:PHY_LE_CODED_MASK:
  *                        在数据包中增加纠错编码以实现更远的传输范围,
  *                        以实现 蓝牙5 的 "4x range" 4倍范围。
  *                        使用FEC编码,根据方案又分为:
  *                        LE Coded S=2:2个编码位代替原来一个数据位,
  *                                      速率降为 500K/s,传输范围增大2倍;
  *                        LE Coded S=8:8个编码位代替原来一个数据位,
  *                                      速率降为 125K/s,传输范围增大4倍;
  *                     设置 autoConnect 自动连接时,该项无效
  *
  * @param handler:    传入一个Handler,以指定回调发生的线程,
  *                     传入null时,回调将会在一个未指定的后台线程上进行。
  */
 BluetoothGatt connectGatt(Context context,
                           boolean autoConnect,
                           BluetoothGattCallback callback, 
                           int transport, int phy,
                           Handler handler) { ··· }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值