目前,我正在开发一个与一个 BLE 硬件通信的应用程序,该硬件正在接收命令并响应命令响应。为了模拟硬件,我们开发了一个 iOS 模拟器应用程序,它在外设中工作并响应请求的命令。但是不知何故,当我尝试写入写入特性时,我在 onCharacteristicWrite
回调中得到了 status = BluetoothGatt .GATT_REQUEST_NOT_SUPPORTED
。但不知何故,我开始知道我们需要在 Android 应用程序中实现 Central 和 Peripheral 角色。
但我仍然不确定,我们是否需要实现 Peripheral 角色以在多个数据包中发送和接收数据。
我正在使用以下不错的博客文章开发应用程序:
- https://medium.com/@avigezerit/bluetooth-low-energy-on-android-22bc7310387a
- https://android.jlelse.eu/android-bluetooth-low-energy-communication-simplified-d4fc67d3d26e
- https://www.bignerdranch.com/blog/bluetooth-low-energy-on-android-part-2/
并使用以下 repo 作为学习观点:
- https://github.com/bignerdranch/android-bluetooth-testbed/tree/a/android-ble-part-3
提前致谢!
最佳答案
通常,您的手机应用程序是中央设备,它通过蓝牙与外围设备通信。如果你想向外设发送数据,你可以在手机应用程序中写入一个特性,前提是该特性启用了写入。您的中心可以通过两种方式从外围设备获取数据:它可以从外围设备读取特征(如果已启用)或从外围设备接收通知(如果已启用)。因此,如果您只有一个中心(电话应用程序)和一个外围设备(某种蓝牙设备)并且您想要来回发送数据,则您不需要在电话应用程序中同时具有中心角色和外围角色。如果你有一些特殊的事情发生,对你来说可能会有所不同,我不知道。我说的是典型设置。
如果你想向外围设备发送命令,你可以将这些命令写入一个特征。外围设备可以反过来响应通知。这基本上是我开发蓝牙解决方案的方式,但它可能会有所不同,具体取决于您想要实现的目标。
关于android - Android 应用程序是否需要同时执行中央和外设角色才能通过 BLE 发送和接收数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54644582/