我正在为学校项目制作 Android 应用程序,我只需要能够使用 BLE 与设备进行通信。
我现在已连接到设备的 GATT 服务器,但我找不到任何服务,因为从未调用过
onServicesDiscovered
回调。
我已按照 android - BLE gatt.discoverServices() 返回 true 但回调从未触发 - Stack Overflow 和 android - onServicesDiscovered 在连接到 GATT 服务器时从未调用 - Stack Overflow 的说明进行操作,但它不起作用。 ..
我也回复了其中一篇帖子,这是我的留言:
我目前遇到了同样的问题,但无法及时纠正。我什至使用按钮拨打
以确保在搜索服务之前完成连接,但也不起作用。gatt.discoverServices()
当我按下这个按钮时,我得到这个。
您知道如何处理吗?
编辑:以下两个权限在我的清单中,但我无法设法让用户启用它们,它们似乎在开始时没有被授予。 但是,此时似乎需要这些权限的所有方法都工作正常(例如或bluetoothAdapter.startDiscovery()
)。device.getName()
Manifest.permissions.BLUETOOTH_CONNECT
Manifest.permissions.BLUETOOTH_SCAN
有什么办法可以处理吗?
更多调试让我看到
onServicesDiscovered()
被调用,真正的问题在于 BroadcastReceiver
。在调用函数registerReceiver
之前,我忘记在IntentFilter中添加动作ACTION_GATT_SERVICES_DISCOVERED
。添加此操作解决了问题。
@Volt 的答案才是真正的 MVP,这是我的问题,我还忽略了向我的 IntentFilter 添加操作