当前位置: 首页 > 知识库问答 >
问题:

Android、蓝牙、BTLE、GATT阅读功能失败?

卢朝
2023-03-14

我有一个Android应用程序,我正在开发。这是一个BTLE应用程序,我有一些BTLE标签,我需要谈谈。

我是按照书做的,发现设备,GATT连接(后续连接),写/读特性。。。它起作用了。

现在奇怪的是,如果我关闭并打开应用程序两次,它就会停止工作。

假设我已经有一个标签正确连接,粘合和正常工作。

手机重启。第一次打开应用程序-

在日志中,每次尝试都没有什么不同。我记录每个调用并打印返回状态:没有区别。只是readChar回调从未被调用。

Android是4.3,在不同的手机上有相同的问题(S3、S4、Note3)(注:在应用程序关闭时,我正确地断开了所有GATT的连接)

你对检查什么有什么想法吗?或者这是一个已知的Android错误?我找过了,但什么也没找到......

共有1个答案

索卓
2023-03-14

Android 4.3(至少)上专为BTLE设计的蓝牙协议栈肯定存在不少问题。我不知道这是否是一个特定的供应商实现、驱动程序问题,或者其他什么,但对于开发人员来说,这确实是一场噩梦。

这是我发现确实有助于改善事情:-禁用WiFi-通过代码强制启用/禁用蓝牙(BluetoothAdapter方法使能()和禁用())

事实上,当事情开始变得“不稳定”时,循环打开和关闭蓝牙确实可以解决它。这需要BLUETOOTH_ADMIN的能力,显然不需要,因为它会暂时关闭所有你蓝牙连接的小工具,并会弹出一些对话框给用户,他/她可以禁用正在进行的重启。

现在我得到了更稳定的结果。

尽管如此,谷歌(或我不认识的任何人)让如此糟糕的软件在野外泛滥还是让人感到羞耻。

 类似资料:
  • 我正在尝试构建一个使用蓝牙的android应用程序。在教程中,他们使用128位UUID,但我只有16位UUID。我必须使用服务UUID和蓝牙基础创建一个新的128位UUID。 例子: 警报通知服务UUID(16bit)= 通过组合这两个UUID,我们收到。。。 警报通知服务UUID(128bit)= 有没有合适的方法?

  • 我正在调查与GATT相关的蓝牙低能量(BLE)中可用的安全类型。更具体地说,当使用指定了不同安全级别(低、中、高)的gatttool时,会执行什么类型的操作?我的理解是,BLE中的安全管理器支持4种不同的安全属性: 没有配对 与不支持中间人(MitM)保护(JustWorks)的关联模型配对 与MitM保护配对(密码输入、数字比较、OOB) LE安全连接配对。 这些安全属性是否与gatttools

  • 从蓝牙android API获取android辅助蓝牙gatt服务。 下面是我们获取ble服务的代码: 甚至尝试以独占方式获取辅助服务,但它返回空对象: 有人可以指出任何指针如何在Android中搜索辅助服务。

  • 运行后,Android部分返回connection be success(BluetoothGattCallback::onConnectionStateChange的参数为STATE_CONNECTED),但是linux中的程序(btgatt-server)没有得到任何响应,仍然阻止等待接受。(第485行)。 我还使用了另一个示例代码:l2cap-ble.c,结果完全相同。 有人能帮我吗?我的目

  • 本文向大家介绍Android实现蓝牙聊天功能,包括了Android实现蓝牙聊天功能的使用技巧和注意事项,需要的朋友参考一下 蓝牙,时下最流行的智能设备传输数据的方式之一,通过手机app和智能设备进行连接,获取设备上的测量数据,我们生活中随处可见的比如蓝牙智能手环,蓝牙电子秤,蓝牙心电测量设备等等。 本篇我将紧接着上篇结尾所写,一起来看下手机之间如何通过蓝牙实现文字聊天。 先贴出上篇的一些demo;

  • 我正在考虑为一个定制应用程序实现一些GATT服务,但我现在正忙于研究。我知道服务UUID不是随机的,有些部分定义得很好,有些部分仍然让我困惑。 E、 g.设备信息服务的广告名称似乎是0000180a xxx,我可以在中找到“180a”https://www.bluetooth.com/specifications/gatt/services/,但子字段“型号字符串”的id为00002a24 xxx