安卓 4.3 BLE

Posted

技术标签:

【中文标题】安卓 4.3 BLE【英文标题】:Android 4.3 BLE 【发布时间】:2013-10-07 23:03:55 【问题描述】:

有人在使用 Nexus 4 连接到 BLE 设备时遇到问题吗?我正在使用基于 TI CC2540 的 BLE 模块。我能够连接到 BLE 设备、发现服务、写入特征以及写入描述符以获取通知。然后突然之间我无法再连接到设备了。我取消了设备与手机的配对,也恢复了出厂设置,但似乎没有任何效果。

我也在关注其他人在这篇帖子中所做的事情android 4.3 Bluetooth Low Energy unstable

我禁用了 wifi,通过禁用它然后启用它来重新启动手机上的蓝牙模块。就像我上面说的,这工作了一段时间,但现在我无法使用 connectGatt 方法连接到设备。我也有使用三星 BLE SDK 和 Android 4.2.2 的三星 G4,它使用同样的蓝牙模块,它仍然可以工作。

我在 logcat 中可以看到的主要内容是,当我调用 connectGatt(this, false, mBleGattCallback) 时发生空指针异常是这样的:

10-07 16:29:04.745: DEBUG/BtGatt.GattService(1090): onConnected() - clientIf=4, connId=4, address=3C:2D:B7:84:F8:83
10-07 16:29:04.745: DEBUG/BluetoothGatt(13165): onClientConnectionState() - status=0 clientIf=4 device=3C:2D:B7:84:F8:83
10-07 16:29:04.745: WARN/BluetoothGatt(13165): Unhandled exception: java.lang.NullPointerException

我可以在这里看到从 AOSP 调用的代码:https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/bluetooth/BluetoothGatt.java

这似乎很奇怪,因为我将回调交给了非空的连接调用。有人有什么想法吗?

【问题讨论】:

【参考方案1】:

查看我对Android 4.3 Bluetooth Low Energy unstable 的重新修改答案,我在连接时添加了我使用 Samsng Galaxy S3 的经验。也许这对你有用。

如果你有其他问题并且分析得很好,可以给三星工程师写邮件:blesdk (this is the at sign) samsung [dot c om )

【讨论】:

嗨,OneWorld,我能够早早地解决我的问题。我无法确定我做错了什么。所以我决定创建一个新项目,并开始将一些东西一件一件地重新组合起来。在我这样做之后,我添加了更多代码以使其更健壮。这几乎就是您在重新编写的答案中提到的所有内容。确保关闭 Gatt API 的资源和实例,并在必要时重新启动。还要确保以同步性质继续执行命令。感谢您的反馈并希望提供帮助。

以上是关于安卓 4.3 BLE的主要内容,如果未能解决你的问题,请参考以下文章

安卓BLE知识及EasyBle的使用

原创Android 5.0 BLE低功耗蓝牙从设备应用

安卓讲课笔记4.3 安卓手势编程

Android BLE蓝牙详细解读

Arduino ESP32 BLE蓝牙和安卓端蓝牙数据交互实验

安卓4.3怎么升级到4.4