1. 程式人生 > >android4.0增加遙控器按鍵步驟

android4.0增加遙控器按鍵步驟

1、ir_keyboard.h增加物理鍵值。

      遙控器的物理鍵值可以通過在IR_Keypad_IntIsr函式裡面(ir_keyboard.c)

      列印IR_Keypad_GetValue的返回值,這個地方屬於核心列印,直接使用printk打印不出來,需要提高級別

      printk("0""print str");這樣就能夠打印出來了。

2、在ir_keyboard.c數組裡面Key_Code,增加遙控器和物理鍵值的對應,這個在input.h裡面,針對特殊的遙控器,有可能需要自己手動新增input裡面沒有的碼值。

      比如新增一個  mute  0x1bf

3、修改device\hisilicon\godbox\prebuilt下的

     Vendor_0001_Product_0001

    在這個檔案裡面需要將我們增加的mute 0x1bf = 447 新增這樣一行

    key  447  MUTE    這樣在對應於這個key的名稱就是KEYCODE_MUTE

4、修改framework/base/core/res/res/values/attrs.xml

     <enum name="KEYCODE_MUTE " value="12" /> 這個地方的value值是java應用層獲取到的values值。

5、 修改framework/base/core/java/android/view/keyevent.java

      這裡面需要修改2個地方。

    <1>

     一個是LAST_KEYCODE,之前新增如下,

        public static final int KEYCODE_MUTE         = 12;

       如果KEYCODE_MUTE是最後一個,讓LAST_KEYCODE = KEYCODE_MUTE

  <2>

     SparseArray<String> names = KEYCODE_SYMBOLIC_NAMES;最後面增加

      names.append(KEYCODE_MUTE,"KEYCODE_MUTE");

     好像應用會在這個數組裡面進行查詢的。之前我這個地方沒加,執行了make update-api之後,current.txt始終找不到這個按鍵,並且應用也獲取不到這個按鍵。

6、確保以上修改的都是正確的,對應關係弄對了

     在根目錄下,執行make update-api 這個地方會把java的一些全域性變數進行規整,寫到current.txt裡面去,2.2上是current.xml。

     執行完畢,可以檢查 current.txt檔案是否包含了,這個檔案在framework/base/api下面

field public static final int KEYCODE_MUTE = 12; // 0xc

如果不包含,說明以上步驟沒執行對。再仔細看看。

7、執行完make update-api之後,檢查current.txt是ok的,

     執行全部編譯,這個地方不知道修改了哪裡,索性全部編譯了。

    編譯出錯了

   frameworks/base/api/15.txt:22233: error 10: Removed field android.view.KeyEvent.KEYCODE_CALCULATOR
frameworks/base/api/15.txt:22311: error 10: Removed field android.view.KeyEvent.KEYCODE_MUSIC
target Java: filterfw (out/target/common/obj/JAVA_LIBRARIES/filterfw_intermediates/classes)


******************************
You have tried to change the API from what has been previously released in
an SDK.  Please fix the errors listed above.
******************************

因為去掉了2個按鍵,而這裡還有對映的原因。

這2個按鍵應用對映的鍵值正好和我定義的衝突,我就去掉了keyevent 陣列以及常量的地方。

再加上。應用有的地方用到了。使用方法是KeyEvent.KEYCODE_MUSIC,所以修改了常量值應該不影響使用的。

重新編譯。

o,我的老天

out/target/common/obj/PACKAGING/public_api.txt:22549: error 17: Field android.view.KeyEvent.KEYCODE_CALCULATOR has changed value from 210 to 1178
out/target/common/obj/PACKAGING/public_api.txt:22636: error 17: Field android.view.KeyEvent.KEYCODE_MUSIC has changed value from 209 to 1177


******************************
You have tried to change the API from what has been previously released in
an SDK.  Please fix the errors listed above.
******************************

還是提示錯誤,不讓修改這個怎麼辦呢?哦,修改了之後沒有執行make update-api

還是不對。網上找了半天

自己找到了在framework/base/api 下有n(n取決於你原始碼的版本,如果你原始碼的版本是2.1 ,那麼就 有分別以 1~ 7命名的xml,就是api level)個xml文件,分別對應android api 的不同版本。   在這些xml中,把你在framework層中修改的地方對應進去。 如我這個錯誤的地方,在8.xml 和 current.xml 中找到“FLAG_SHOW_LIGHTS”,把裡面的value 值改成和你程式碼中值一致就可以了。

改了試試

補充:

編譯ok了,但是應用上還是獲取不到我新加的鍵

0KeyEvent

0KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_UNKNOWN, scanCode=398, metaState=0, flags=0x8, repeatCount=0, eventTime=325956, downTime=325956, deviceId=4, source=0x501 }

scanCode 是對的,但是keyCode 不對,為啥?

相關推薦

android4.0增加遙控器按鍵步驟

1、ir_keyboard.h增加物理鍵值。       遙控器的物理鍵值可以通過在IR_Keypad_IntIsr函式裡面(ir_keyboard.c)       列印IR_Keypad_GetValue的返回值,這個地方屬於核心列印,直接使用printk打印不出來,需

android4.0.4 增加HDMI設定

最近到4412最基本的都調了 然後覺得沒事做了 所以增加一個HDMI的設定 不能閒著 以下使用的是廣州斯道的icool210開發板 原始碼修改如下 最開始我是先在設定里加上這些設定然後在去實現功能 這裡就一起說了 之前android2.3裡有HDMI設定所以這裡就參照那個增

和菜鳥一起學android4.0.3原始碼之按鍵驅動短長按功能

第一:按鍵ADB除錯    通過使用adb shell getevent,可以得到如下裝置操作後的指令,具體表示的含義,可以參考網上很多的文章,這裡就不再敘述 這裡的0035和0036分別表示螢幕上的X座標和Y座標,後面的值表示具體的座標點

Android4.0設置界面改動總結(二)

idg 手機 中新 pop istview _id 實例 cycle 系統應用 今年1月份的時候。有和大家分享給予Android4.0+系統設置的改動:Android4.0設置界面改動總結 時隔半年。回頭看看那個時候的改動。事實上是有非常多問題的,比方說

centos7.0 增加/usr分區的容量減少home分區的大小

刪除 xfs 無法 使用 增加 size -h roo /dev/ 把/home內容備份,然後將/home文件系統所在的邏輯卷刪除,擴大/root文件系統,新建/home:tar cvf /tmp/home.tar /home #備份/homeumount /home

Android4.0系統源代碼11月17日放出

jai mci list wke amr 代碼 4gl jqm dp2 VLC%E6%A0%B8%E5%BF%83%E5%BC%95%E6%93%8E%E6%8E%88%E6%9D%83%E4%BB%8EGPL%E6%8D%A2%E5%88%B0LGPL http://m

ROS 1.0 indigo版本安裝步驟

ubun 其他 vpd image search .bashrc 添加 分布式 64位 本文是在“ROS不能再詳細的安裝教程”的基礎上略作修改。在此特向原作者“小萌是個球”致謝。ROS(Robot Operating System)翻譯過來叫機器人操作系統,官方定義如下:R

Android TV開發中所有的遙控器按鍵監聽及註意事項,新增home鍵監聽

char 技術分享 ces num block eas article 分享 iou 原文:Android TV開發中所有的遙控器按鍵監聽及註意事項,新增home鍵監聽 簡單記錄

VMware Workstation Pro 15.0.2安裝詳細步驟

根據所需要版本點選下載: VMware-workstation-full-14.0.0-6661328 提取碼:g3y9  VMware-workstation-full-15.0.0-10134415 提取碼:bbkj  VMware-workstation-f

正確安裝android4.0版本的sdk以及虛擬機器AVD

android4.0以上版本存在很多問題,例如datepicker控制元件顯示不出來等等,那麼如何安裝android4.0版本的sdk和建立AVD呢? 首先下載android4.0的sdk 解壓後加到sdk/platforms檔案下  顯示 android-14資料夾,然後

如何隱藏Android4 0及以上版本的ActionBar NotificationBar StatusBar Syst

                1.ActionBar:<activityandroid:name="Demo"android:label="@string/app_name"android:theme="@android:style/Theme.NoTitleBar.Fullscreen">&l

redis3.0.0 叢集安裝詳細步驟

Redis叢集部署文件(centos6系統) (要讓叢集正常工作至少需要3個主節點,在這裡我們要建立6個redis節點,其中三個為主節點,三個為從節點,對應的redis節點的ip和埠對應關係如下) 127.0.0.1:7000 127.0.0.1:7001 127.0.

CDH6.0.1詳細安裝步驟

CDH6.0.1詳細安裝步驟 系統環境• 作業系統:3臺 CentOS 7.3 x64 • Cloudera Manager:6.0.1• CDH: 6.0.1 VM Name VM IP Adress Centos_HostName Role

Android4.0-Fragment框架實現方式剖析(一)

經過反覆的學習對比,個人覺得帶著問題學習新知是最有效的學習方式,因此文字就以提問的方式來講述Fragment框架實現方式。 1、什麼是Fragment? Fragment包含在Activity中,Fragment只能存在於Activity的上下文(context)內,沒有A

ubuntu編譯android4.0.3原始碼

1.ubuntu安裝 a.下載64位桌面版映象檔案ubuntu-12.10-desktop-amd64 b.下載EasyBCD     新增新條目——>NeoGrub——>安裝——>配置     新增     root (hd0,0)     kernel

Android6.0 動態許可權申請步驟以及需要注意的一些坑

因為工作需要,簡單研究了一下Android6.0許可權申請,在Google提供的sample的基礎上,寫了一個簡單的demo。算是自己的筆記吧,可能會比較混亂,主要是方便以後檢視。後期有別的問題,隨時更新~ 6.0許可權的基本知識,以下是需要單獨申請的許可權,共分為9組,每組只要有一個許可權申請成功了,就

Android6.0動態許可權申請步驟以及需要注意的一些坑

簡單研究了一下Android6.0許可權申請,在Google提供的sample的基礎上,寫了一個簡單的demo。算是自己的筆記吧,可能會比較混亂,主要是方便以後檢視。 6.0許可權的基本知識,以下是需要單獨申請的許可權,共分為9組,每組只要有一個許可權申請成功了,就預設整組許可權都可以使用了。 gro

android4.0建立AVD後,開啟虛擬機器黑屏問題解決

1、更新最新版本SDK(可能要翻牆)注意選中ARM EABI v7a System Image這個是虛擬機器需要的 android中的api是這麼說的: System ImageRecommended. Although you might have one or mo

CDH6.0.1詳細安裝步驟及問題解決

CDH6.0.1詳細安裝步驟及常見問題解決 Cloudera Manager能夠大大減輕配置hadoop叢集的工作量,安裝好以後能夠快速熟悉Hadoop生態系統常用的一些元件,如HBase, Hive, Spark, Oozie, Impala, Hue等等。筆者在安裝Cloudera

安卓開發——Android6.0動態許可權申請步驟以及需要注意的一些坑

因為工作需要,簡單研究了一下Android6.0許可權申請,在Google提供的sample的基礎上,寫了一個簡單的demo。算是自己的筆記吧,可能會比較混亂,主要是方便以後檢視。後期有別的問題,隨時更新~ 6.0許可權的基本知識,以下是需要單獨申請的許可權,共分為9組,每組只要