<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                Android系統提供了一種描述語言來定義具有跨進程訪問能力的服務接口,這種描述語言稱為Android接口描述語言(Android Interface Definition Language,AIDL)。以AIDL定義的服務接口文件是以aidl為后綴名的,在編譯時,編譯系統會將它們轉換成Java文件,然后再對它們進行編譯。在本節中,我們將使用AIDL來定義硬件訪問服務接口IFregService。 在Android系統中,通常把硬件訪問服務接口定義在frameworks/base/core/java/android/os目錄中,因 此,我們把定義了硬件訪問服務接口IFregService的文件IFregService.aidl也保存在這個目錄中,它的內容如下所示。 **frameworks/base/core/java/android/os/IFregService.aidl** ~~~ package android.os; interface IFregService { void setVal(int val); int getVal(); } ~~~ IFregService服務接口只定義了兩個成員函數,它們分別是setVal和getVal。其中,成員函數setVal用來往虛擬硬件設備freg的寄存器val中寫入一個整數,而成員函數getVal用來從虛擬硬件設備freg的寄存器val中讀出一個整數。 由于服務接口IFregService是使用AIDL語言描述的,因此,我們需要將其添加到編譯腳本文件中,這樣編譯系統才能將其轉換為Java文件,然后再對它進行編譯。進入到frameworks/base目錄中,打開里面的Android.mk文件,修改LOCAL_SRC_FILES變量的值。 ~~~ LOCAL_SRC_FILES += \ ...... voip/java/android/net/sip/ISipService.aidl \ core/java/android/os/IFregService.aidl ~~~ 修改這個編譯腳本文件之后,我們就可以使用mmm命令對硬件訪問服務接口IFregService進行編譯了。 ~~~ USER@MACHINE:~/Android$ mmm ./frameworks/base/ ~~~ 編譯后得到的framework.jar文件就包含有IFregService接口,它繼承了android.os.IInterface接口。在IFregService接口內部,定義了一個Binder本地對象類Stub,它實現了IFregService接口,并且繼承了android.os.Binder類。此外,在IFregService.Stub類內部,還定義了一個Binder代理對象類Proxy,它同樣也實現了IFregService接口。 前面提到,用AIDL定義的服務接口是用來進行進程間通信的,其中,提供服務的進程稱為Server進程,而使用服務的進程稱為Client進程。在Server進程中,每一個服務都對應有一個Binder本地對象,它通過一個樁(Stub)來等待Client進程發送進程間通信請求。Client進程在訪問運行Server進程中的服務之前,首先要獲得它的一個Binder代理對象接口(Proxy),然后通過這個Binder代理對象接口向它發送進程間通信請求。 在接下來的2.4.2小節中,我們就將硬件訪問服務FregService從IFregService.Stub類繼承下來,并且實現IFregService接口的成員函數setVal和getVal。在2.5小節中,我們再介紹如何在應用程序中獲得硬件訪問服務FregService的一個Binder代理對象接口,即IFregService.Stub.Proxy接口。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看