我正在为 Cinnamon 开发一个蓝牙小程序,我希望有一种方法可以切换蓝牙并执行其他基本操作,如配对、连接/断开连接等
我曾尝试探索 bluez 提供的 dbus 协议,但我无法弄清楚如何监听电源开/关事件以及如何实际使用 dbus 发出命令,如果可能的话...... :(
答案1
这是可能的。
您可以使用以下方式探索树
busctl tree org.bluez
这将显示节点树。您必须枚举设备,然后从该列表中选择每个设备的状态,并根据您的目标启用/禁用。
更多信息请访问https://ukbaz.github.io/howto/python_gio_1.html#dbus,它面向 Python,但应该向您展示基础知识。代码相当基础,因此将其移植到任何语言都应该或多或少是微不足道的。
答案2
读man hcitool bluetoothd bluetoothctl;man -k bluetooth;man -k bluez
。
如果您找到一个具有您喜欢的功能的版本,请充分利用 GNU/Linux 的开源特性!
例如hcitool
:
# Don't do this in your $HOME, each package should have its own subdirectory
# determine the package containg the executable
dpkg -S "$(type -p hcitool)"
pkg="$(dpkg -S "$(type -p hcitool) | head -n 1 | cut '-d:' -f1)"
# Retrieve the source
apt-get source "$pkg"
/bin/ls -l "${pkg}*"
这里解释了如何使用“源”。
一般来说,这个过程被称为“从源代码构建”,如下所示(假设您已经完成sudo apt install build-essential
):
- 下载 (
apt-get source ...
) 档案 (.tar.gz
)。将文件放在您可以写入的位置,并放在具有足够空间的文件系统上。最终,此文件是一次性的。 - 检查档案 (
tar tzvf ...
,参见man tar
)。大多数档案会解压到子目录中。对于少数不解压的档案,请将解压到mkdir
您自己的子目录中,然后进入其中。mv
.tar.gz
cd
- 解压档案 (
tar xzvf ...
)。 - 阅读所有大写名称的文件(
README*
、INSTALL
、... )。它们包含完整的说明,并覆盖我在此之后输入的任何内容。阅读源代码(通常是./src/*
)以了解程序。 - 如果有
configure
脚本,则运行它(./configure
)。configure
需要许多选项,请参阅INSTALL
文件或./configure -h
。如果configure
成功,它将构建一个Makefike
。 make
编译并链接必要的内容。它会生成一个可在安装前进行测试的可执行文件。- 这是唯一需要
root
特权的步骤:sudo make install
。此命令将可执行文件、man
页面、运行时必需品复制到“正确”的位置。 - 一旦
sudo make install
起作用,整个源目录就是多余的,可能会被删除。
一如往常,YMMV。