首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android BLE:“扫描失败,UUID应用注册失败的原因”

Android BLE:“扫描失败,UUID应用注册失败的原因”
EN

Stack Overflow用户
提问于 2016-09-05 15:42:01
回答 2查看 5.9K关注 0票数 9

我正在使用RxAndroidBle库开发一个应用程序,它大约每30秒定期执行一次BLE扫描,并且每分钟左右执行一些BLE操作。几个小时后,通常在5到24小时之间,扫描停止工作。每次应该开始扫描时,我都会得到:

代码语言:javascript
复制
09-05 09:08:37.160 8160-8160/myapp D/BluetoothAdapter: startLeScan(): null
09-05 09:08:37.165 8160-8160/myapp D/BluetoothAdapter: STATE_ON
09-05 09:08:37.165 8160-8160/myapp D/BluetoothAdapter: STATE_ON
09-05 09:08:37.165 8160-8160/myapp D/BluetoothLeScanner: Start Scan
09-05 09:08:37.165 8160-8160/myapp D/BluetoothAdapter: STATE_ON
09-05 09:08:37.165 8160-8160/myapp D/BluetoothAdapter: STATE_ON
09-05 09:08:37.170 8160-8160/myapp D/BluetoothAdapter: STATE_ON
09-05 09:08:37.170 8160-8160/myapp D/BluetoothAdapter: STATE_ON
09-05 09:08:37.210 8160-12850/myapp D/BluetoothLeScanner: onClientRegistered() - status=133 clientIf=0
09-05 09:08:37.210 8160-12850/myapp D/BluetoothLeScanner: Registration failed, unregister clientIf = 0
09-05 09:08:37.215 8160-8160/myapp D/BluetoothLeScanner: Scan failed, reason app registration failed for UUID = 4c321920-a2b7-449a-bc24-ea4361f7a255
09-05 09:08:44.150 8160-8160/myapp V/myapp.debug: unsubscribing scan
09-05 09:08:44.150 8160-8160/myapp V/myapp.debug: Clearing scan subscription
09-05 09:08:44.150 8160-8160/myapp D/BluetoothAdapter: stopLeScan()
09-05 09:08:44.150 8160-8160/myapp D/BluetoothAdapter: STATE_ON
09-05 09:08:44.155 8160-8160/myapp D/BluetoothAdapter: STATE_ON
09-05 09:08:44.155 8160-8160/myapp D/BluetoothAdapter: STATE_ON
09-05 09:08:44.155 8160-8160/myapp D/BluetoothAdapter: STATE_ON
09-05 09:08:44.155 8160-8160/myapp D/BluetoothLeScanner: could not find callback wrapper

有没有人知道是什么导致了这个问题,或者可以做些什么来解决它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-20 05:57:26

在较旧的Android实现中,在启用蓝牙适配器的时间和扫描速度之间似乎存在竞争条件。您可以通过尝试使用已禁用的蓝牙适配器或正在转换的蓝牙适配器(或具有打开的连接并正在尝试读取)来触发此错误。在我的应用程序中导致它的根本问题是蓝牙子系统无法获得新的蓝牙插座。上面的答案(耗尽关贸总协定的资源)可能是其中的一部分。在较旧的Android设备中,避免此问题的总体逻辑是: 1.确保大约每5次扫描禁用/启用蓝牙适配器。这似乎有助于清除较旧的缓存数据。2.确保在蓝牙适配器未启用时不尝试启动扫描(如果您定期禁用/启用,则可以执行此操作)。3.确保从GATT接口断开连接和执行下一次扫描之间存在延迟。4.不要试图一次读取超过3个设备的GATT特征。

总体而言,在较老的Android设备中,要完全避免这个问题在某种程度上是不可避免的,但你可以通过仔细选择扫描/停止扫描/连接/断开连接/周期的时间来缓解这个问题。

票数 4
EN

Stack Overflow用户

发布于 2017-08-31 23:21:27

问题是,在几个连接之后,您会达到最大数量的BluetoothGatt对象。

在开始新的扫描之前,断开每个设备的连接之后,在BluetoothGatt对象上调用close()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39325864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档