android - Android 应用程序是否需要同时执行中央和外设角色才能通过 BLE 发送和接收数据?

标签 android bluetooth-lowenergy bluetooth-peripheral

目前,我正在开发一个与一个 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/

相关文章:

android - Firestore 阻止的用户规则

android - BLE - 我无法同时读取 2 个特性,一个是温度服务,另一个是电池服务

iOS BLE "Characteristic User Description"

bluetooth-lowenergy - 使用 HCITool 为蓝牙 LE 服务做广告

android - 在没有序列化器的对象上使用 JSON.stringify 需要标记为实验性的

android 图像在屏幕上看起来太小,如何缩放以适合屏幕? wrap_content 似乎不起作用

ios - 如何通过central模式向peripheral发送数据?

ios - 蓝牙低功耗: Advertising local name and service UUID from background iOS

ios - 什么可以用作特定制造商的一组蓝牙模块的唯一标识符?

android - 我如何画一条半透明的白线?