<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                在Android系統中,通常把硬件訪問服務實現在frameworks/base/services/java/com/android/server目錄中。因此,我們把實現了硬件訪問服務FregService的FregService.java文件也保存在這個目錄中,它的內容如下所示。 **frameworks/base/services/java/com/android/server/FregService.java** ~~~ package com.android.server; import android.content.Context; import android.os.IFregService; import android.util.Slog; public class FregService extends IFregService.Stub { private static final String TAG = "FregService"; private int mPtr = 0; FregService() { mPtr = init_native(); if(mPtr == 0) { Slog.e(TAG, "Failed to initialize freg service."); } } public void setVal(int val) { if(mPtr == 0) { Slog.e(TAG, "Freg service is not initialized."); return; } setVal_native(mPtr, val); } public int getVal() { if(mPtr == 0) { Slog.e(TAG, "Freg service is not initialized."); return 0; } return getVal_native(mPtr); } private static native int init_native(); private static native void setVal_native(int ptr, int val); private static native int getVal_native(int ptr); } ~~~ 硬件訪問服務FregService繼承了IFregService.Stub類,并且實現了IFregService接口的成員函數setVal和getVal。其中,成員函數setVal通過調用JNI方法setVal_native來寫虛擬硬件設備freg的寄存器val,而成員函數getVal調用JNI方法getVal_native來讀虛擬硬件設備freg的寄存器val。此外,硬件訪問服務FregService在啟動時,會通過調用JNI方法init_native來打開虛擬硬件設備freg,并且獲得它的一個句柄值,保存在成員變量mPtr中。如果硬件訪問服務FregService打開虛擬硬件設備freg失敗,那么它的成員變量mPtr的值就等于0;否則,就得到一個大于0的句柄值。這個句柄值實際上是指向虛擬硬件設備freg在硬件抽象層中的一個設備對象,硬件訪問服務FregService的成員函數 setVal和getVal在訪問虛擬硬件設備freg的寄存器val時,必須要指定這個句柄值,以便硬件訪問服務FregService的JNI實現可以知道它所要訪問的是哪一個硬件設備。 硬件訪問服務FregService編寫完成之后,就可以執行mmm命令來重新編譯Android系統的services模塊了。 ~~~ USER@MACHINE:~/Android$ mmm ./frameworks/base/services/java/ ~~~ 編譯后得到的services.jar文件就包含有FregService類。下面我們繼續介紹硬件訪問服務FregService的JNI實現。
                  <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>

                              哎呀哎呀视频在线观看