是否有 g_dbus 函数来更新非缓存的 属性 值?

Is there a g_dbus function to update the non cached property value?

我正在使用 Raspberry Pi 进行主机项目。目标是在主机上有一个图形用户界面,可以在播放音乐时控制 phone。

我似乎无法让 phone 启用 "Shuffle" 或 "Repeat"。

我正在使用 Bluez 5.45 和 GLIB。我可以基本控制播放、停止、下一步。

有没有类似g_dbus_proxy_set_cached_property()的功能?

我试过 g_dbus_proxy_set_cached_property() 函数,但它只更新缓存值,phone 从未接收到值集。

我找到了如何 set/get 属性。我使用了 g_dbus_proxy_call_sync 方法。

g_dbus_proxy_call_sync (GDBusProxy *proxy,
                    const gchar *method_name,
                    GVariant *parameters,
                    GDBusCallFlags flags,
                    gint timeout_msec,
                    GCancellable *cancellable,
                    GError **error);

我需要访问 "org.freedesktop.DBUS.Properties" 界面。我需要使用 "Set" 方法。它需要三个参数。

Set(String interface_name, String property_name, A value)

  1. interface_name - 属性 关联的接口
  2. 属性名称 - 属性
  3. 的名称
  4. value - 属性 的新值(可以是任何有效的 DBUS 类型)。

    g_dbus_proxy_call_sync( myProxy, "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.bluez.MediaPlayer1", "Repeat", g_variant_new_string ("alltracks")), G_DBUS_CALL_FLAGS_NONE, // Flags -1, // timeout NULL, // cancellable &error // error );