我們講過用QML語言開發MeeGo應用程式,在MeeGo開發中,DBus是MeeGo程序通信的核心。我們簡要的看一下MeeGo系統的哪些地方都使用了DBus.
1.從一個應用中啟動另一個應用時。比如在聯系人應用中想要撥打聯系人的電話時,MeeGo系統中是通過DBus做程序通信的.
2.Service Framework是基于DBus的。比如你看到一個多媒體檔案,點選送出一個"播放檔案"的請求,該請求搜尋合适的應用來播放該檔案.
3.釋出和訂閱者系統。比如一個螢幕上的顯示訂閱了電池的電量消息,則在電量變化時通過DBus通知訂閱者.
4.Notification Manager也是基于DBus的。如有短信到達,Notification Manger會進行提示.
5.系統的配置檔案如果想在變動的時候通知MeeGo中感興趣的應用,也需要用到DBus,比如主題的變化等.
6.藍牙中間件bluez和電話管理系統ofono的程序通信系統也是基于DBus的。
鑒于DBus的這種重要性,可以說"沒有DBus就沒有MeeGo。那麼我們也有必要了解一下MeeGo中有哪些DBus工具可以使用,友善在開發過程中遇到問題時更快的定位和解決問題。
準備DBUS_SESSION_BUS_ADDRESS
兩個基于DBus的應用要能進行通信,他們需要有同樣的DBUS_SESSION_BUS_ADDRESS.MeeGo在啟動它的uxlaunch時,會啟動一個DBus的服務程序,可以從這個程序裡得到DBUS_SESSION_BUS_ADDRESS的值,而且通過uxlaunch加載的應用會繼承該環境變量,如果是自己從指令行啟動的話,那麼需要在運作你的應用前設定好該環境變量,才能正常的和MeeGo系統裡的已有應用進行通信。可以通過如下方法設定該值.
1. export `tr ‘\0′ ‘\n’
< /proc/$(pidof duihome)上海企業網站制作="color: #000000;">/environ|grep DBUS_SESSION_BUS_ADDRESS`
工具1:dbus-send/dbus-monitor
這個是随dbus軟體包一起釋出的工具,封裝比較底層,這裡不做介紹了。可以在控制台指令行裡輸入man dbus-send查詢詳細用法。
工具2:qdbus
該工具是基于Qt的一個指令行工具。用法如下
1. qdbus [--system] [--literal] [servicename] [path] [method] [args]
2. servicename the service to connect to (e.g., org.freedesktop.DBus)
3. path the path to the object (e.g., /)
4. method the method to call, with or without the 上海企業網站設計與制作n style="color: #0000ff;">interface
5. args arguments to pass to the call
有兩個參數
system 連接配接到system-bus(dbus有兩種bus,一種是session-bus,一種是system-bus,不加參數預設連接配接到session-bus.)
literal 列印原始傳回資訊
* 如果qdbus指令不帶任何參數,将會列出在dbus上所有的service.
* 假如參數裡隻有service的名字,那麼qdbus會列出所有的對象路徑.
* 如果qdbus指令給出了service的名字和對應的對象路徑,則該路徑上的方法,信号和可用的屬性都會被列出來.
qdbus 用法舉例
上海網站建設 列出session bus的所有service
1. $ qdbus
上海徐彙企業網站制作列出system bus的所有service
1. $ qdbus system
列出com.nokia.meego-im-uiserver service上所有路徑
1. $ qdbus com.nokia.meego-im-uiserver
列出com.nokia.meego-im-uiserver service上某一路徑裡可用的方法
1. $ qdbus com.nokia.meego-im-uiserver /org/maemo/duiinputmethodserver1
調用指定service,指定路徑上的某個方法。
1. $ qdbus com.nokia.meego-im-uiserver /org/maemo/duiinputmethodserver1
org.maemo.duiinputmethodserver1.showInputMethod
工具3:d-feet
d-feet是一個用python寫的應用,在MeeGo中可以用如下指令安裝
1. #zypper install d-feet
要檢視系統裡有哪些已經注冊的dbus service, 運作d-feet指令
1. #d-feet
如要調用指定的method,在對應的method上輕按兩下就可以了.
上海闵行企業網站設計與制作 如要如果該method需要參數,則會彈出參數選項框
工具4:qdbusviewer
qdbusviewer則是Qt軟體包中的一個開發工具,在MeeGo中可以用如下指令安裝
1. #zypper install qt-devel-tools上海徐彙企業網站設計與制作
要檢視系統裡有哪些已經注冊的d上海闵行企業網站制作bus service, 運作qdbusviewer指令
1. #qdbusviewer
如果想調用對應的method,在該方法上點選滑鼠右鍵,可以看到Call字樣,選擇即可