如何获得D-Bus属性的值?

时间:2012-05-13 00:18:39

标签: c dbus

我正在尝试为基于MPRIS的媒体播放器创建一般的远程控制应用程序。控制媒体播放器非常简单,但由于我对D-Bus和DBus-GLib很陌生,从D-Bus获取值对我来说有点搞砸了。

从文档中我看到我需要获取PlaybackStatus属性,如果我想知道我的播放器是否实际播放了某些内容,但我找不到一个在C中获取此值的工作示例。

目前获得它的行看起来像这样:

dbus_g_proxy_call(player_proxy, "Get", &err, G_TYPE_STRING, "Volume", G_TYPE_INVALID, G_TYPE_INT, &volume, G_TYPE_INVALID);

当然,它不起作用,因为org.mpris.MediaPlayer2.Player接口不理解Get方法。

2 个答案:

答案 0 :(得分:2)

  

当然,它不起作用,因为org.mpris.MediaPlayer2.Player接口不理解Get方法。

这是你需要的线索。 Get方法实际上在org.freedesktop.DBus.Properties interface上,因此您需要在该接口的代理对象上调用它,而不是player_proxy对象(可能是org.mpris.MediaPlayer2.Player的代理1}} interface)。

答案 1 :(得分:0)

查看this source code后,您似乎需要使用"IsPlaying",如方法hx_dbus_player_is_playing中所示。