首页 > 其他分享 >Android BLE & BluetoothGattCallback.onServicesDiscovered不回调或部分回调解决

Android BLE & BluetoothGattCallback.onServicesDiscovered不回调或部分回调解决

时间:2024-09-05 18:27:10浏览次数:4  
标签:蓝牙 blog https net BLE Android 回调 onServicesDiscovered

A.

如题,调用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;
}

https://blog.csdn.net/Canra/article/details/124979522

 

B.

1.调用gatt.discoverService需要写在onConnectionStateChange方法里面。

2.延时多调用几次discoverService方法。

https://blog.csdn.net/aozhenmo2498/article/details/101411611

 

C.

在网上搜寻到方案是在gatt.discoverServices()之前加延时也只能部分解决问题,当时估计应该是线程问题。后来将涉及到UI线程的控件更新去除,无需延时完美解决。

 

https://blog.csdn.net/hujiusi185/article/details/106681636/

 

refs:

Android BLE 蓝牙编程(一)
https://www.cnblogs.com/wobeinianqing/p/5838273.html

Android BLE 蓝牙编程(二)
https://www.cnblogs.com/wobeinianqing/p/5879851.html

Android BLE 蓝牙编程(三)
https://www.cnblogs.com/wobeinianqing/p/5883135.html

Android BLE 蓝牙编程(四)
https://www.cnblogs.com/wobeinianqing/p/5886756.html

================================

Android BLE开发指南(一)入门基础
https://blog.csdn.net/kuaiguixs/article/details/90755223

Android BLE开发指南(二)中心设备端程序开发详解
https://blog.csdn.net/kuaiguixs/article/details/91437759

Android BLE 蓝牙开发指南(三)外围设备端开发详解
https://blog.csdn.net/kuaiguixs/article/details/91886524

标签:蓝牙,blog,https,net,BLE,Android,回调,onServicesDiscovered
From: https://www.cnblogs.com/bluestorm/p/18399002

相关文章

  • vxe-table 自定义单元格样式
    <template><div><vxe-tableborderclass="mytable-style":header-cell-class-name="headerCellClassName":row-class-name="rowClassName":cell-class-name="cellClassName&quo......
  • petite-vue 组件的 mounted 回调发生在 nextTick() 任务之后
    在使用petite-vue开发项目时,有一个列表视图,每个列表项是一个自定义组件。在向列表视图的数组数据添加数据后,希望通过EventBus触发一个事件,让新的列表项组件mounted回调可以响应这个事件。当使用PetiteVue.nextTick()传入回调函数来触发事件时,发现新的组件并没有响应该事......
  • IOS 20 发现界面(UITableView)歌单列表(UICollectionView)实现
    发现界面完整效果本文实现歌单列表效果文章基于IOS19发现界面(UITableView)快捷按钮实现继续实现发现界面歌单列表效果歌单列表Cell实现实现流程:1.创建Cell,及在使用UITableView的Controller控制器上注册Cell;2.获取data列表数据,并调用UITableView的reloadData(),将数据......
  • Ansible教程
    1.安装ansible在有安装python情况下:pipinstallansible或者指定版本:pipinstallansible==2.7.2没有安装python情况下:ubuntu:aptinstallansiblecentos:yuminstallansible-y2.查看ansible版本及配置文件ansible--version 3.修改ansible配置cd/optnanoansibl......
  • 在stable diffussion中控制生成图片的光线Kj
    合集-AIGC(27)1.轻松复现一张AI图片04-222.StableDiffusion中的常用术语解析04-233.Stablediffusion中这些重要的参数你一定要会用04-244.StableDiffusion中的embedding04-255.怎么使用Stablediffusion中的models05-286.StableDiffusionWebUI详细使用指南05-297.Stabledi......
  • drop tablespace xxx including contents恢复---惜分飞
    联系:手机/微信(+8617813235971)QQ(107644445)标题:droptablespacexxxincludingcontents恢复作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]最近接到一个客户恢复请求,对系统的核心业务表空间发起了droptablespacexxxincludin......
  • 在stable diffussion中控制生成图片的光线
    在摄影中,光线起着至关重要的作用,它对图像的整体质量和氛围有着显著的影响。您可以使用光线来增强主题,创造深度和维度,传达情感,以及突出重要细节。在这篇文章中,我会告诉你如何在stablediffussion中控制生成图片的光线。软件我们将使用AUTOMATIC1111StableDiffusionGUI来创......
  • 在stable diffussion中控制生成图片的光线
    在摄影中,光线起着至关重要的作用,它对图像的整体质量和氛围有着显著的影响。您可以使用光线来增强主题,创造深度和维度,传达情感,以及突出重要细节。在这篇文章中,我会告诉你如何在stablediffussion中控制生成图片的光线。软件我们将使用AUTOMATIC1111StableDiffusionGUI来创建......
  • C++ 原子变量atomic variable
    原子变量原子变量(atomicvariable)是C++11引入的一种同步机制,用于在多线程环境中进行无锁的、线程安全的操作。原子变量的操作是不可分割的,即在执行过程中不会被其他线程中断,从而避免了数据竞争和不一致的问题。原子变量位于头文件中。基本概念原子性原子性:一个操作是......
  • MATLAB警告: 桌面配置文件已损坏或格式不正确。 Problem parsing Desktop restore xml
    电脑蓝屏后,重新打开MATLAB,出现此问题解决方案如下:如果您正在启动MATLAB并收到以下错误,则可能使用的是与MATLAB附带的Java版本不同的Java版本。ERROR:Warning:Anerroroccurredwhilereadingthedesktopconfigurationfile为了检查MATLAB使用的Java版本,启动MATLAB并运......