BlueZ官方网站还提供了一篇关于BlueZ 5 API 介绍和移植指南的博文,其中提供了一些关于其 DBus API 的描述。他们在页面顶部写道:
与 BlueZ 4 相比,BlueZ 5 D-Bus API 包含重大变化。大部分变化是由于 BlueZ 5 中的以下特性:
- ...
- 接口版本的介绍(例如
org.bluez.Adapter1
)。当引入新版本时,我们将尝试同时支持至少两个最新版本。
- ...
有一节讨论 DBus 对象管理器:
相反,应用程序将通过执行ObjectManager.GetManagedObjects
调用来发现可用的适配器,并使用“<code>org.bluez.Adapter1”接口查找任何返回的对象。
此外,除了检查docs
BlueZ 源代码的目录(如this和this答案中所述),我发现检查目录中的示例源代码也很有帮助test
(https://git.kernel.org/pub /scm/bluetooth/bluez.git/tree/test)。
以下是示例广告代码的部分内容:
BLUEZ_SERVICE_NAME = 'org.bluez'
LE_ADVERTISING_MANAGER_IFACE = 'org.bluez.LEAdvertisingManager1'
DBUS_OM_IFACE = 'org.freedesktop.DBus.ObjectManager'
DBUS_PROP_IFACE = 'org.freedesktop.DBus.Properties'
...
def main(timeout=0):
...
adapter_props = dbus.Interface(bus.get_object(BLUEZ_SERVICE_NAME, adapter),
"org.freedesktop.DBus.Properties")
adapter_props.Set("org.bluez.Adapter1", "Powered", dbus.Boolean(1))