如题,调用BluetoothGatt.discoverServices()返回true了,但是一直没走到onServicesDiscovered回调中,用Ble调试蓝牙助手测试了,也是一样的情况,所以应该是外设的问题,但是ios的没问题,蓝牙处理还是有差别,网上有一种方式说是延迟去多discoverServices几次,可能可以找到,尝试了一下还是不行,最后用了下面的方式基本可以解决:
加多个标志,就是连接里面加多个5s的延迟操作,如果5s后还没走回调,就重新发起连接,测试基本没问题,虽然解决了但是不知道什么原因导致的,有知道的老哥可以留言下
mHandler.postDelayed(new Runnable() { @Override public void run() { if(!isDiscoverServices){//如果还没找到服务-执行重连 connectDevice(device,context); } } },5000); @Override public void onServicesDiscovered(BluetoothGatt gatt, int status) { super.onServicesDiscovered(gatt, status); isDiscoverServices=true; }