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

时间:2019-02-12 07:10:11

标签: android bluetooth-lowenergy bluetooth-peripheral

当前,我正在开发与一个BLE硬件进行通信的应用程序,该BLE硬件正在接收命令并响应命令响应。为了模拟硬件,我们开发了一个iOS模拟器应用程序,该应用程序在Peripheral中运行,并响应所请求的命令。但是无论如何,当我尝试写入写特征时,我在status = BluetoothGatt .GATT_REQUEST_NOT_SUPPORTED回调中得到了onCharacteristicWrite。但是以某种方式,我知道我们需要在Android应用程序中实现Central和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

谢谢!

2 个答案:

答案 0 :(得分:1)

通常,您的手机应用程序是中央应用程序,它通过蓝牙与外围设备通信。如果要向外围设备发送数据,则可以在电话应用中编写特征,前提是已为该特征启用了写功能。您的中央设备可以通过两种方式从外围设备获取数据:它既可以从外围设备读取特征(如果已启用),也可以从外围设备接收通知(如果已启用)。因此,如果您只需要一个中央(电话应用程序)和一个外围设备(某种蓝牙设备)并且想要来回发送数据,则您无需在电话应用程序中同时扮演中央和外围角色。如果您正在进行一些特殊的操作,对您来说可能会有所不同,我不知道。我说的是典型的设置。

如果要向外围设备发送命令,则可以将这些命令写入特性。外围设备可以依次响应通知。这基本上就是我开发蓝牙解决方案的方式,但是根据您要实现的目标,它可能会有所不同。

答案 1 :(得分: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

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