2

目前,我正在开发一个应用程序,它与一个接收命令并响应命令响应的 BLE 硬件通信。为了模拟硬件,我们开发了一个 iOS 模拟器应用程序,它在外围设备中工作并响应请求的命令。但是不知何故,当我尝试写入写入特性时,我得到了status = BluetoothGatt .GATT_REQUEST_NOT_SUPPORTED回调onCharacteristicWrite。但不知何故,我开始知道我们需要在 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/

并使用以下回购作为学习观点:
- https://github.com/bignerdranch/android-bluetooth-testbed/tree/a/android-ble-part-3

提前致谢!

4

2 回答 2

1

通常,您的手机应用程序是中央应用程序,它通过蓝牙与外围设备通信。如果您想向外围设备发送数据,您可以在手机应用程序中编写一个特性,前提是该特性已启用写入。您的中心可以通过两种方式从外围设备获取数据:它可以从外围设备读取特征(如果已启用)或从外围设备接收通知(如果已启用)。因此,如果您只有一个中央(电话应用程序)和一个外围设备(某种蓝牙设备)并且您想来回发送数据,那么您不需要在电话应用程序中同时具有中央和外围设备角色。如果你有一些特别的事情发生,对你来说可能会有所不同,我不知道。我说的是典型的设置。

如果要向外围设备发送命令,可以将这些命令写入特征。外围设备可以反过来用通知进行响应。这基本上是我开发蓝牙解决方案的方式,但它可能会有所不同,具体取决于您想要实现的目标。

于 2019-02-12T07:26:37.997 回答
0

需要两个设备相互通信。

设备 A: 它将是宣传数据的外围设备。即:信标,BLE硬件

设备 B: 它将是中央设备,它将发送读、写请求。即:手机

设备 A 的设置:

如果您没有外设,如果您的设备支持该高级功能,有一种方法可以让您的 android 手机像外设一样工作。

因此,在开始之前,您可以简单地使用以下应用程序进行检查:https: //play.google.com/store/apps/details?id=com.kyriakosalexandrou.bluetoothsupportcheck

为了使您的设备像外围设备一样,您可以安装以下应用程序,它只是模拟 GATT 和广告: https ://play.google.com/store/apps/details?id=com.ble.peripheral.sim

重要提示:根据您的要求设置服务和特性,如果要在其上写入数据,请确保特性已启用写入。

于 2019-02-16T03:33:06.680 回答