1. 程式人生 > >Android 5.1高通方案增加GPIO按鍵

Android 5.1高通方案增加GPIO按鍵


Android的linux kernel本身有GPIO-keys驅動,程式碼結構和Android 4.x差異較大,在我的MSM8909上,測試表明增加GPIO按鍵需要如下操作:


1. 平臺相關配置檔案msm8909-qrd-skue-專案名.dtsi檔案中找到gpio_keys節,增加藍字相關內容
    gpio_keys {
        compatible = "gpio-keys";
        input-name = "gpio-keys";
        pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend";
        pinctrl-0 = <&gpio_key_active>;
        pinctrl-1 = <&gpio_key_suspend>;

        ...
        key_xxx {
            label = "key_ptt";
            gpios = <&msm_gpio 36
0x1>;  // GPIO口一定要選帶中斷功能的引腳
            linux,input-type = <1>;
            linux,code = <77>;           // 這是驅動發出的鍵盤掃描碼
            gpio-key,wakeup;
            debounce-interval = <15>;
        };

    };
    
2. 引腳相關配置檔案msm8909-pinctrl-專案名.dtsi檔案中找到tlmm_gpio_key節,增加或更改紅字相關內容
        tlmm_gpio_key {
            qcom,pins = <&gp 90>, <&gp 91>, <&gp 36>
;
            qcom,pin-func = <0>;
            qcom,num-grp-pins = <3>;
            label = "tlmm_gpio_key";
            gpio_key_active: gpio_key_active {
                drive-strength = <2>;
                bias-pull-up;
            };
            gpio_key_suspend: gpio_key_suspend {
                drive-strength = <2>;
                bias-pull-up;
            };
        };

3. device\qcom\msm8909\gpio-keys.kl中增加鍵盤掃描碼對應的鍵盤碼
鍵盤碼是Android系統收到底層驅動提交的掃描碼後,向App傳送的鍵盤碼,比如本例
key 77    F7
 
#掃描碼對應給App的鍵盤碼是F7,F7對應的值在frameworks\base\core\java\android\view\KeyEvent.java有現成定義: public static final int KEYCODE_F7 =137;
另外,在root過的Android裝置上直接更改system\usr\keylayout\gpio-keys.kl檔案,可以為裝置的按鍵直接更改功能。

總結: Android 5.1.1中增加GPIO按鍵設計得還是很容易的,先選定帶中斷的GPIO口,裝置樹增加相關的專案,鍵盤對映檔案增加相關鍵盤對映項就OK了。

相關推薦

Android 5.1方案增加GPIO按鍵

Android的linux kernel本身有GPIO-keys驅動,程式碼結構和Android 4.x差異較大,在我的MSM8909上,測試表明增加GPIO按鍵需要如下操作: 1. 平臺相關配置檔案msm8909-qrd-skue-專案名.dtsi檔案中找到gpio_

方案Android設備幾種開機模式的進入與退出

內容 熱啟動 boot 操作 com 刷機 安裝 tor min 高通方案的Android設備主要有以下幾種開機模式,Android、EDL、Fastboot、Recovery和FFBM,其進入及退出的方式如下表。 開機模式 屏幕表現 冷啟

5AP10.4開發者指南——WLAN(1.5 WLAN驅動模組化的一些其他修改)

1.5 WLAN驅動模組化的一些其他修改 從QCA_Networking_2016.SPF.4.0版本開始,OL和DA驅動相互獨立,並新建了一個UMAC模組,作為通用層,並獨立於OL和DA的模組。 因為DA驅動已經獨立於“UMAC+OL”驅動結構,所以將UM

方案Android裝置幾種開機模式的進入與退出

sunrain_hjb的BLOG ARM.WinCE.Android.Robot.Linux.IoT.VR... Develop Helpful and Effective apps to make Jobs easier and lives Better!

Android 5.1 Settings源代碼簡要分析

lang oid inpu mini tty 之前 arch 概述 wro 轉載請註明出處,謝謝~http://blog.csdn.net/u011974987/article/details/51004854。 概述: 先聲明:本人工作快兩

Android 5.0+級動畫開發 矢量圖動畫 軌跡動畫 路徑變換

Android 第1章 課程介紹為了成就更多高逼格的人才,我專門整理了Android5.0以後主推的實現酷炫動畫的新技術,教你掌握實現動畫的高逼格技巧。課程中我會詳細講解每個動畫效果實現的原理和所用的技術,並帶你一步一步的實現每個動畫效果,讓你在學完本次課程後,能夠舉一反三,再也不必擔心設計MM的設計你沒法實

RK3288 Android 5.1 韌體 編譯

官網連結:http://wiki.t-firefly.com/zh_CN/Firefly-RK3288/compile_android.html   以下內容為原文轉載+部分修改   編譯 Android 5.1 韌體 準備工作 編譯 Android 對機

Android 5.1 建立多級資料夾失敗之奇怪的問題

問題: Android 5.1 建立多級資料夾失敗之奇怪的問題 原始碼: /** * 判斷資料夾是否建立 */ private static String foundFolder(String... str){ int length = str.length; String

Android 5.1 乙太網服務啟動過程

1.SystemServer簡介 Android系統中的好多功能能夠執行起來,在程式碼層面好多都是以服務的方式實現的。而幾乎所有的服務都是在SystemServer中建立的。SystemServer作為Android系統的一個核心程序,它是在zygote程序中孕育出來的。 那麼zygo

android 5.1預置apk

作為一個菜鳥,前一段時間在工作中按照前輩的方法比葫蘆畫瓢的去預置apk.自己並不明白,前輩們為什麼會這麼做?這麼做的意義是什麼?這種預置方法有什麼好處?今天看了一下資料,明白其中涉及到的4中預置apk的方法和這麼預置的意義所在。於是,就向廣大童鞋分享一下~~~~   一、如何將帶原始碼

Android 7.1 系統Setting介面增加返回機制

Android系統在設定了隱藏狀態列和虛擬按鍵之後,進入Setting介面,沒有滑鼠的話就無法返回了。這裡我們通過修改原始碼, 實現返回到桌面的功能。具體程式碼路徑如下: packages\apps\Settings\src\com\android\settings\Se

Android 5.1 wifi 密碼掉電後丟失解決

Android 5.1 直接掉電wifi密碼解決: 1.一旦wifi連線後,將密碼備份 2.在開機的時候將備份密碼覆蓋wpa_supplicant.conf檔案即可 具體實現如下 package com.android.server.wifi; import java.io.Fi

Android 5.1修改SystemUi導航欄背景顏色

現在很多手機都是用虛擬按鍵了,但是很多手機的虛擬按鍵的導航欄背景顏色是黑色的,看起來其醜無比啊,比如華為; 要想看上去協調一些,當然是改成透明的啦,怎麼改呢?按照以往的思路,當然是直接改佈局檔案就可以了的,想想這個思路也沒錯,佈局檔案位於 frameworks/base/packages/S

Android 5.1.1 原始碼目錄結構說明

Android 5.1.1 |-- bootable (啟動引導相關程式碼) |-- Makefile |-- abi (applicationbinary interface,應用程式二進位制介面,生成libgabi++.so相關庫檔案) |-- art (google在4.4後

Android 5.1原始碼編譯環境搭建

      根據官方及網路上的教程,成功搭建了Android 5.1原始碼的編譯環境併成功編譯。過程如下: 一: 使用虛擬機器,安裝ubuntu。 ubuntu-14.04.5-desktop-amd

Android 5.1 長按power鍵流程分析

private GlobalActionsDialog createDialog() { // Simple toggle style if there's no vibrator, otherwise use a tri-state if (!mHasVibrator

RK3288 平臺(Android 5.1)+ PN548 除錯流水賬(一、前期編譯篇)

一、獲取原始碼 客戶向瑞芯微技術視窗申請SDK 二、SDK 編譯 1.JDK 安裝 Android5.1 系統編譯依賴於 JDK7。 編譯之前需安裝 JDK7,並配置 JAVA 環境變數。例如, 安裝路徑為/usr/lib/jvm/java

Android 5.1 AppOps總結

什麼是AppOps Android App在AndroidManifest.xml中申請了很多執行時需要獲取的許可權,例如 <uses-permission android:name="android.permission.NF

RK3288編譯 Android 5.1 韌體

1 準備工作編譯 Android 對機器的配置要求較高:64 位 CPU16GB 實體記憶體+交換記憶體30GB 空閒的磁碟空間用於構建,原始碼樹另外佔用大約 25GB安裝 OpenJDK 7:   sudo apt-get install openjdk-7-jdk提示:安裝 openjdk-7-jdk,會

Activity啟動流程分析(基於android 5.1

最近由於工作需要,需要深入瞭解AMS的內部實現。說老實話,雖然已經經過了幾輪重構,AMS的程式碼還是又臭又長。。。 萬事開頭難,先找個入口開始看吧。當從Launcher介面點選啟動一個app時,會啟動一個新的activity。所以就從startActivity()看起,研究