乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      android4.0 添加一個(gè)新的android 鍵值

       昵稱2009261 2014-04-25

       這里添加新的鍵值,不是毫無憑據(jù)憑空創(chuàng)造的一個(gè)鍵值,而是根據(jù)kernel中檢測到的按鍵值,然后轉(zhuǎn)化為android所需要的數(shù)值:

      以添加一個(gè)linux鍵值為217,把它映射為android的鍵值Browser(這個(gè)鍵值之前不存在)為例介紹一下:

      1、android之前沒有這個(gè)鍵值,需要定義

      /frameworks/base/core/java/android/view/KeyEvent.java

      //定義這個(gè)新的鍵值

      public static final int KEYCODE_BROWSER      = 210;

      然后我們會(huì)看到有如下注釋:

      // NOTE: If you add a new keycode here you must also add it to:

      //  isSystem()

      //  native/include/android/keycodes.h

      //  frameworks/base/include/ui/KeycodeLabels.h

      //  external/webkit/WebKit/android/plugins/ANPKeyCodes.h

      //  frameworks/base/core/res/res/values/attrs.xml

      //  emulator?

      //  LAST_KEYCODE

      //  KEYCODE_SYMBOLIC_NAMES

      //

      //  Also Android currently does not reserve code ranges for vendor-

      //  specific key codes.  If you have new key codes to have, you

      //  MUST contribute a patch to the open source project to define

      //  those new codes.  This is intended to maintain a consistent

      //  set of key code definitions across all Android devices.

      上面的注釋已經(jīng)為我們指明了添加鍵值所需要的步驟:

      2、/frameworks/base/core/java/android/view/KeyEvent.java

          public final boolean isSystem() {

              return native_isSystemKey(mKeyCode);

          }

      /frameworks/base/jni/android_view_KeyEvent.java

      static jboolean native_isSystemKey(JNIEnv* env, jobject clazz, jint keyCode) {

          return KeyEvent::isSystemKey(keyCode);

      }

      /frameworks/base/libs/ui/Input.cpp

      bool KeyEvent::isSystemKey(int32_t keyCode) {

      switch (keyCode) {

      ……

               case AKEYCODE_BROWSER:

                   return true;

      }

      }

      3native/include/android/keycodes.h

      /*

       * Key codes.

       */

      enum {

      ……

      AKEYCODE_CALCULATOR      = 210,

      AKEYCODE_BROWSER        = 211,

      }

      4、frameworks/base/include/ui/KeycodeLabels.h

        這里定義的實(shí)際上是我們在kl文件,也就是linux keyandroid key的一個(gè)映射表中的linux鍵值和android鍵值的名稱;

      比如atc260x-irkeypad.kl

      ……

      key  217  BROWSER //這里的BROWSER就是我們定義的android鍵值的字符形式,217則是linux鍵值

            

      那么,BROWSER不能無緣無故就使用,必然有定義位置,這個(gè)位置就是KeycodeLabels.h

      static const KeycodeLabel KEYCODES[] = {

      ……

      { "CALCULATOR", 210 },

      {"BROWSER",     211}, //這里的BROWSER就是我們上面使用的東西,而211android鍵值

      { NULL,           0}

      }

      EventHub.cpp中加載并解析這個(gè)mapatc260x-irkeypad.kl,那么得到的是linux鍵值217keystring,這個(gè)string就是BROWSER,有了上面這個(gè)KEYCODES數(shù)組,就可以獲得它對應(yīng)的android鍵值了。

      5、external/webkit/WebKit/android/plugins/ANPKeyCodes.h

      enum ANPKeyCodes {

      ……

      kAppSwitch_ANPKeyCode = 186,

      kBrowser_ANPKEYCODE    = 211,

      };

      6、frameworks/base/core/res/res/values/attrs.xml

      <attr name="keycode">

         <enum name="KEYCODE_CALCULATOR" value="210" />

         <enum name="KEYCODE_BROWSER" value="211" />

      </attr>

      7、/frameworks/base/core/java/android/view/KeyEvent.java

      LAST_KEYCODE也就是最后一個(gè)keycode,因?yàn)樘砑恿诵碌?,所以需要更改這個(gè)的數(shù)值

      LAST_KEYCODE = KEYCODE_BROWSER

       private static final 

      SparseArray<String> KEYCODE_SYMBOLIC_NAMES = new SparseArray<String>();

      private static void populateKeycodeSymbolicNames() {

      ……

      names.append(KEYCODE_MUSIC, "KEYCODE_MUSIC");

               names.append(KEYCODE_CALCULATOR, "KEYCODE_CALCULATOR");

      names.append(KEYCODE_BROWSER, "KEYCODE_BROWSER");

      }

      這些操作完成了之后,就完成了linux鍵到android的鍵值映射。也就是android中多了一個(gè)KEYCODE_BROWSER它的值是211.


      后面我們會(huì)分析為什么這樣添加。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請遵守用戶 評(píng)論公約

        類似文章 更多