2010年5月12日 星期三

利用AIDL實作遠端服務之步驟


1. 建立專案,建立RemoteServiceBinding的Activity類別,按下Finish鍵。


2. 建立IRemoteServiceCallback介面並宣告valueChanged兩個函式。


3. 建立IRemoteService介面並宣告registerCallback和unregisterCallback兩個函式。

4. 建立ISecondary介面並宣告getPid和basicTypes兩個函式。

5. 建立遠程RemoteService類別。

6. 在AndroidManifest.xml檔案中增加服務,記得在Process欄位上補上:remote。

7. 在RemoteServiceBinding.java程式中,宣告兩個按鈕及1個文字物件,並利用findViewById函式將這些物件和視域建立關係,利用setOnClickListener函式,來為按鈕安裝監聽按鈕的事件之監聽器。

8. 實作ServiceConnection內的函式。

9. 在RemoteService類別中增加IRemoteService.Stub物件,並將該物件當成onBind函式的傳回值。

10. 此時執行後再下Start Service按鈕如標題欄如顯示Binding則表示成功。

11. 在RemoteService.java下,實作registerCallback和unregisterCallback兩個函式,並宣告RemoteCallbackList mCallbacks物件,來儲存註冊的資訊。

12. 在RemoteService.java下,實作1個handler來定期處理事情,呼叫valueChanged函式來改變Activity上的畫面。

13. 在RemoteServiceBinding.java下,實作valueChanged函式,並將收到的值顯示在畫面上。

3 則留言:

  1. 老師您好,很抱歉佔用您這個版面詢問一下一個跟這篇不相關的問題,日前有詢問過您關於freerunner手機的參考書籍,而我也找了許多相關的OS來更新,之前有試過OTmoko及其他Android的OS,最後選擇這版http://code.google.com/p/android-on-freerunner/ 目前有持續更新的版本,但這版的wifi似乎有些許問題。
    [wifi的問題是,我有兩台AP一台是D-Link Dir 300 另一台為ASUS WL-500GP V1,兩台的加密方式都是設為WAP2 AES,問題出在Freerunner都能連上AP但只有連上500GP那台能正常連上網路,連上Dir 300卻無法開啟網頁,後來將Dir 300設為無加密,也是一樣能連上AP卻無法開啟網頁]
    不知道您是否也有相關問題,因此想問您是否是freerunner本身硬體上的先天問題?

    回覆刪除
  2. 目前我們尚未碰過這類問題,建議您先使用儀器或監視軟體,觀察通訊情形再做判斷。

    回覆刪除
  3. 作者已經移除這則留言。

    回覆刪除