如何使用Java在Raspberry Pi 3上访问BLE?

2022-09-04 04:27:00

Raspberry Pi 3包括BLE支持。我确认它的工作原理

sudo hcitool lescan

它为相邻广告商返回MAC和BLE的“完整本地名称”。

如何在Java中以编程方式访问它?


答案 1

要在Raspberry Pi 3上使用BLE,您必须更新bluez(Raspbian linux中的蓝牙核心),然后使用bluez D-Bus接口与之交互。

我正在寻找自己的java库,但这非常困难,因为关于Java中的D-Bus和bluez的文档很少。

对于 bluez,只有上一个发行版中的示例代码。

现在,我已经编写了一个简单的脚本,将bluez版本更新为最新版本:https://gist.github.com/tongo/94338cebf4e6367d353439bca8d0a376

我还发现了一篇谈论d-bus,java和bluez的博客文章:http://smartspacestuff.blogspot.it/2016/02/i-got-figurin-out-dbus-bluez.html

它很有用,但对我来说不是很清楚。

我希望这可以有所帮助。

如果您发现其他文档,请将其发布。


答案 2

我不认为目前有一个明确或简单的答案。蓝牙集成需要不属于标准 JDK 的本机组件。

在Linux上使用蓝牙与Java的最常见库是BlueCove。BlueCove提供了额外的原生库,用于在Linux上使用蓝牙:BlueCove-GPLBlueCove-bluez(实验)。但是,您可能需要自己编译其中一个以在 RPi 上使用。做的方法将取决于您的发行版,并且需要一些重要的linux知识,编译本机代码等。快速的谷歌搜索显示了以前RPi版本的一些工作示例。目前还不清楚它是否能在RPi 3上与BLE一起使用。

另一个可能是尝试使用“Camel Bluetooth Component”,它是Bluecove上的包装器,并期望安装libbluetooth-dev和blueman。但同样,不清楚它是否适用于RPi 3。

如果无法实现真正的集成工作,另一种选择可能是简单地从Java向您知道已经工作的命令行蓝牙实用程序进行外部Process调用。如果这是一个选项,这取决于您的用例,但我怀疑对于许多BLE特定的用例来说可能就足够了。


推荐