- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我编写了一个 Android 应用程序 (4.4.2),它在大多数时间都能正确连接/断开 BLE 外围设备。但是,每隔一段时间我就会在 Bluetootgatt.java onClientConnectionState() 中收到 NullPointerException 的 LogCat 警告:
我的BluetoothGattCallback回调如下:
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState)
{
if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_CONNECTED)
{
gatt.discoverServices(); // triggers onServicesDiscovered() callback
}
else if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_DISCONNECTED)
{
return;
}
else if (status != BluetoothGatt.GATT_SUCCESS)
{
gatt.disconnect();
}
}
应用在连接时总是正确地进入 onConnectionStateChange newState==STATE_CONNECTED 回调,但是当它抛出异常时(在应用断开连接时),它永远不会进入 onConnectionStateChange 回调中的任何地方。我在 2013 Nexus 7 上运行此程序。为什么会出现此异常?
最佳答案
这似乎是我在 onPause() 函数中调用 disconnect() 后跟 close() 造成的。我删除了 disconnect() 并且 close() 可以很好地处理断开连接,我再也看不到异常了。
关于安卓蓝牙Gatt : Unhandled execption in callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28400740/
我正在尝试在 gatt 连接并成功发现服务后立即读取特征。但在 onCharacteristicRead gatt 回调中收到错误 15(0x0f,GATT_INSUFFICIENT_ENCRYPTI
我有代码连接到广告自定义服务的自定义 BLE 服务器设备,然后尝试发现它提供的所有服务。 代码适用于 Android 5.1 的 Nexus 5 三星 SM-T320 Android 4.4.2 ZT
我尝试通过蓝牙低功耗 GATT 模式将 android 连接到 linux。 Bluez 中有一个示例代码:btgatt-server.c ,我用它作为服务器。 Android 端为 Android
我的问题很简短 - 在 Zephyr 文档中,我找不到我的问题的答案(这让我感到惊讶)。 一个 GATT 客户端是否可以连接到多个 GATT 服务器? 现在我正在使用两块板来计算一些东西(一个作为服务
我的目标是在 Ubuntu 14.04 上使用 BlueZ 4.101(不是 BlueZ 5.X)通过 USB BLE Dongle(Cambridge Silicon Radio CSR8510 A
我编写了一个连接到心率模型的程序,但我不知道如何解释数据。以下是从第一个输出开始的示例: heart rate is : 16-40-15-04-6D-02-8C-01-0C-04-24-04-AB-
我开发了两个实现 GATT 角色的应用程序:服务器和客户端。就我而言,GATT 服务器也是 GAP 外围设备,GATT 客户端是 GAP 中心。 我可以将客户端连接到服务器/从服务器断开连接,但是当我
BLE 设备(脉搏计)的特性值始终相同。信号转到onCharacteristicChanged,但值没有改变,尝试通过不同的方式获取该值。 @Override public void onServic
我正在尝试编写一个应用程序来通过低功耗蓝牙发送消息,然后通过我的外围设备中的 UART 传递这些消息。我已经按照步骤 here应用程序扫描并成功找到设备。但是,使用 BluetoothGatt = B
我一直在研究 BT 4.x (LE) 规范,试图弄清楚这是否可能(没有配对/预兆的事件)。 如果可能的话,有没有人有洞察力(最好链接到规范)? 最佳答案 正如 Mike Petrichenko 评论的
我在这里有一个更广泛的问题,所以如果有人可以向我指出可以解释这一点的文档或文章,那就足够了。不用说,一天的谷歌搜索让我无处可去,我可以伸出援助之手。 我正在连接到 BeagleBoard使用 Blue
我正在为 Android 手机和 Android watch (wearOS) 编写应用程序。这些应用程序将通过蓝牙相互通信。基本上,Android 手机上的应用程序将与 WearOS 设备绑定(bi
我正在研究与 GATT 相关的低功耗蓝牙 (BLE) 中可用的安全类型。更具体地说,使用指定不同安全级别(低、中、高)的 gatttool 时会执行哪些操作?我的理解是BLE中的安全管理器支持4种不同
我正在为 Android 手机和 Android watch (wearOS) 编写应用程序。这些应用程序将通过蓝牙相互通信。基本上,Android 手机上的应用程序将与 WearOS 设备绑定(bi
我正在尝试在树莓派上使用 go 来查询蓝牙低功耗设备。它是功能性的,我可以连接到我想要的设备并迭代连接设备的服务和特性。现在我只是想简化事情,只是读/写我感兴趣的值。它不起作用。 代码: func o
我正在尝试构建一个使用 BluetoothLE 的 Android 应用程序。在教程中,他们使用 128 位 UUID,但我只有 16 位 UUID。我必须使用服务 UUID 和蓝牙基地创建一个新的
我正在开发一个带有 GATT 服务器的 Android Things 应用程序(Dev Preview 6.1,Raspberry Pi)。当连接的客户端应用程序断开连接时,我的设备已停止广告。但是,
我一直在尝试使用 Glucose service 从 BLE 设备读取葡萄糖测量记录.我能够成功连接到设备并在获取新记录时读取它们,但是当我请求以前记录的列表时,我收到状态为 129 的回调(“GAT
我正在开发一个与自定义蓝牙设备通信的 Android 应用程序。调用 BluetoothGatt.Disconnect() 后,我看到调用了 OnConnectionStateChange 回调,新状
我已经创建了一个 BLE GATT 服务器的 android 应用程序,但我找不到在哪里写 GATT 服务器的名称,我的意思是搜索中出现的设备名称。 我都试过了 https://github.com/
我是一名优秀的程序员,十分优秀!