導航:首頁 > 操作系統 > android鍵盤輸入事件

android鍵盤輸入事件

發布時間:2022-12-21 05:11:45

android EditText控制項如何獲取軟鍵盤輸入事件呢

textview自帶了一個監聽TextWatcher 通過這個監聽可以實時拿到輸入的信息
mTxtEmojicon.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub

}

@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub

}
})

② Android 輸入法沒有傳遞鍵盤DELETE事件

為了引出下面遇到的問題,提一下密碼框刪除的思路
刪除細節:已輸入密碼刪除移動焦點 ,和無輸入內容時移動焦點
密碼刪除思路:攔截 DELETE 事件,清除輸入框並取消焦點,讓前一個輸入框獲取焦點。

測試妹子在使用華為P10 測試到這里的時候,發現刪除鍵沒用,她以為手機壞了。因為其他手機包括華為P9都可以響應刪除並前移焦點。

開發手機我用的搜狗鍵盤沒有問題,我切換回原生鍵盤再測發現——我勒個皮皮蝦,毛反應都沒有。測試妹子發現不是手機壞的,一個眼神光波差點把我炸到五米外。

這種奇葩坑必須深度挖一挖,不然還會被他的同類絆倒
設備:華為 ALT-TL00 5.0.1
因為這里是純數字密碼,設置屬性 inputType 值為 numberPassword 。
測試日誌發現,發現 ACTION_DOWN 、 ACTION_DOWN 、 DELETE 都沒有獲取到。
為了去除意外,我又測試了不設置 inputType ,果不其然全GG。

此時我真的感覺到了蛋疼 FUCK! 這是個錘子手機,心裡默默吐槽了開發這個鍵盤的程序員兄弟。

翻了一下老司機的博客,和國外論壇。發現還有非常普遍的bug
在輸入框,沒有內容時不會傳遞 DELETE 相關事件

而我測試發現,這個華為手機上。無論輸入框有無內容都沒有傳遞出 DELETE 事件。

1.自定義開發一個鍵盤,這樣就不用再測試其他機型或者其他廠牌的輸入法。統一解決了這個問題。簡單暴力,還可以附加密碼輸入安全策略。
但是項目已經快到尾聲了,全局需要替換密碼鍵盤。還要跟在國外的開發小夥伴溝通。
站在這兩點上,項目經理否定了。讓我先針對性的解決一下。
於是就有了下面的解決辦法。

2.著手 EditText 對鍵盤事件的關聯使用,覆蓋事件監聽介面為我們自定義的,只傳遞需要的 ACTION_DOWN 和 DELETE 事件。
這里我就不貼源碼分析了,因為用到的方法只有兩個,介面名字也是一讀就懂。有興趣的小夥伴可以去翻閱源碼。

參考博客: Android 獲取軟鍵盤的刪除delete事件

③ 如何捕獲android系統按鍵事件

下面是android學習手冊中關於按鍵的介紹,例子,文檔、源碼都可以看,360手機助手中下載

在Android系統中,存在多種界面事件,如點擊事件、觸摸事件、焦點事件和菜單事件等,在這些界面事件發生時,Android界面框架調用界面控制項的事件處理方法對事件進行處理。
Android系統界面事件的傳遞和處理遵循以下規則。
·如果界面控制項設置了事件監聽器,則事件將先傳遞給事件監聽器。
·如果界面控制項沒有設置事件監聽器,界面事件則會直接傳遞給界面控制項的其他事件處理方法。
·即使界面控制項設置了事件監聽器,界面事件也可以再次傳遞給其他事件處理方法。
·是否繼續傳遞事件給其他處理方法是由事件監聽器處理方法的返回值決定的。
·如果監聽器處理方法的返回值為true,表示該事件已經完成處理過程,不需要其他處理方法參與處理過程,這樣事件就不會再繼續進行傳遞。
·如果監聽器處理方法的返回值為false,則表示該事件沒有完成處理過程,或需要其他處理方法捕獲到該事件,事件會被傳遞給其他的事件處理方法。
在MVC模型中,控制器根據界面事件(UI Event)類型不同,將事件傳遞給界面控制項不同的事件處理方法。
·按鍵事件(KeyEvent)將傳遞給onKey()方法進行處理。
·觸摸事件(TouchEvent)將傳遞給onTouch()方法進行處理。
下面以EditText控制項中的按鍵事件為例,說明Android系統界面事件傳遞和處理過程。
假設EditText控制項已經設置了按鍵事件監聽器,當用戶按下鍵盤上的某個按鍵時,控制器將產生KeyEvent按鍵事件。Android系統會首先判斷EditText控制項是否設置了按鍵事件監聽器,因為EditText控制項已經設置按鍵事件監聽器OnKeyListener,所以按鍵事件先傳遞到監聽器的事件處理方法onKey()中,事件能夠繼續傳遞給EditText控制項的其他事件處理方法,完全根據onKey()方法的返回值來確定:如果onKey()方法返回false,事件將繼續傳遞,這樣EditText控制項就可以捕獲到該事件,將按鍵的內容顯示在EditText控制項中;如果onKey()方法返回true,將阻止按鍵事件的繼續傳遞,這樣EditText控制項就不能夠捕獲到按鍵事件,也就不能夠將按鍵內容顯示在EditText控制項中。
Android界面框架支持對按鍵事件的監聽,並能夠將按鍵事件的詳細信息傳遞給處理方法。為了處理控制項的按鍵事件,先需要設置按鍵事件的監聽器,並重載onKey()方法,示例代碼如代碼清單1所示。
代碼清單1 設置按鍵事件的監聽器,並重載onKey()方法
entryText.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
//過程代碼……
return true/false;
}
第1行代碼是設置控制項的按鍵事件監聽器。
第3行代碼的onKey ()方法中的參數:第1個參數View表示產生按鍵事件的界面控制項;第2個參數keyCode表示按鍵代碼;第3個參數KeyEvent則包含了事件的詳細信息,如按鍵的重復次數、硬體編碼和按鍵標志等。
第5行代碼是onKey()方法的返回值:返回true,阻止事件傳遞;返回false,允許繼續傳遞按鍵事件。
KeyEventDemo是一個說明如何處理按鍵事件的示例。
KeyEventDemo用戶界面如圖1所示。

圖1 KeyEventDemo用戶界面
從圖5-27中可以看出,最上方的EditText控制項是輸入字元的區域,中間的CheckBox控制項用來控制onKey()方法的返回值,最下方的TextView控制項用來顯示按鍵事件的詳細信息,包括按鍵動作、按鍵代碼、按鍵字元、UNICODE編碼、重復次數、功能鍵狀態、硬體編碼和按鍵標志。
界面的XML文件的代碼如代碼清單2所示
代碼清單2 界面XML文件
<EditText android:id="@+id/entry"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</EditText>
<CheckBox android:id="@+id/block"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回true,阻止將按鍵事件傳遞給界面元素" >
</CheckBox>
<TextView android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鍵事件信息" >
</TextView>
在EditText中,當任何一個鍵按下或抬起時,都會引發按鍵事件。為了能夠使EditText處理按鍵事件,需要使用setOnKeyListener ()方法在代碼中設置按鍵事件監聽器,並在onKey()方法中添加按鍵事件的處理過程,代碼如代碼清單3所示。
代碼清單3 setOnKeyListener()
entryText.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
int metaState = keyEvent.getMetaState();
int unicodeChar = keyEvent.getUnicodeChar();
String msg = "";
msg +="按鍵動作:" + String.valueOf(keyEvent.getAction())+" ";
msg +="按鍵代碼:" + String.valueOf(keyCode)+" ";
msg +="按鍵字元:" + (char)unicodeChar+" ";
msg +="UNICODE:" + String.valueOf(unicodeChar)+" ";
msg +="重復次數:"+ String.valueOf(keyEvent.getRepeatCount())+" ";
msg +="功能鍵狀態:" + String.valueOf(metaState)+" ";
msg +="硬體編碼:" + String.valueOf(keyEvent.getScanCode())+" ";
msg +="按鍵標志:" + String.valueOf(keyEvent.getFlags())+" ";
labelView.setText(msg);
if (checkBox.isChecked())
return true;
else
return false;
}
在上述代碼中,第4行代碼用來獲取功能鍵狀態。功能鍵包括左Alt鍵、右Alt鍵和Shift鍵,當這3個功能鍵被按下時,功能鍵代碼metaState值分別為18、34和65;但沒有功能鍵被按下時,功能鍵代碼metaState值分別為0。
第5行代碼獲取了按鍵的Unicode值,而在第9行中,將Unicode轉換為了字元,顯示在TextView中。
第7行代碼獲取了按鍵動作,0表示按下按鍵,1表示抬起按鍵。第7行代碼獲取按鍵的重復次數,但當按鍵被長時間按下時,則會產生這個屬性值。
第13行代碼獲取了按鍵的硬體編碼,各硬體設備的按鍵硬體編碼都不相同,因此該值一般用於調試。
第14行獲取了按鍵事件的標志符。

④ Android中怎麼實現模擬鍵盤輸入

這樣啊,你可以先隱藏系統的輸入鍵盤,然後彈出你的模擬鍵盤(可以接收一個View作為輸入參數,以表示當前是哪個控制項在使用輸入法),然後在你的模擬鍵盤中對應的按鈕分別實現以下幾個事件:
b.setOnClickListener(l)
b.setOnTouchListener(l)
在這些事件中去操作那個作為參數傳入的edittext。

⑤ 如何實現給android系統發送一些鍵盤事件和屏幕事件

可能通過命令行 input 命令向android發送事件。
Android中,模擬事件全部是通過input命令來實現的。
input命令的使用:
usage: input ...
input text <string>
input keyevent <key code number or name>
input tap <x> <y>
input swipe <x1> <y1> <x2> <y2>

1. keyevent指的是android對應的keycode,比如home鍵的keycode=3,back鍵的keycode=4.
具體請查閱 <android keycode詳>
然後使用的話比較簡單,比如想模擬home按鍵:
adb shell input keyevent 3根據具體keycode編輯即可。

2. 關於tap的話,他模擬的是touch屏幕的事件,只需給出x、y坐標即可。
此x、y坐標對應的是真實的屏幕解析度,所以要根據具體手機具體看,比如想點擊屏幕(x, y) = (250, 250)位置:
adb shell input tap 250 250

3. 關於swipe同tap是一樣的,只是他是模擬滑動的事件,給出起點和終點的坐標即可。例如從屏幕(250, 250), 到屏幕(300, 300)即 adb shell input swipe 250 250 300 300 。

⑥ android中觸屏事件和鍵盤事件

一個鍵只會有一種狀態,不會沖突。
就好像一個人,當他在中國的時候,不可能同時在美國。。

⑦ Android 鍵盤事件觸發以及監聽

AndroidMainfest.xml

MainActivity

activity_main.xml

⑧ Android開發遇到一個問題,怎麼攔截鍵盤的input事件

從結果來看,input無非是調用鍵盤輸入了一些字元,你可以將這些字元刪去在跳轉。
或者另外一種思路,你自己編一個窗口代替了原來的,讓系統自以為寫入了

安卓怎麼監聽軟鍵盤的輸入事件

這個是不現實的想法,用戶不可能通過軟體監控安卓手機系統的鍵盤輸入數據,目前沒有類似軟體可以安裝使用,你無法通過監控的方法監控其它用戶的鍵盤輸入信息。

⑩ Android手機數字鍵盤遮住輸入框問題解決

在H5頁面設計過程中,Android手機經常遇到數字鍵盤遮住輸入框的問題,該問題無法使用focus事件來進行解決,因為當把數字鍵盤折疊之後,再次點擊輸入框時無法觸發focus事件。

使用click事件來解決此類問題(click事件觸發如下函數):

閱讀全文

與android鍵盤輸入事件相關的資料

熱點內容
抖音生活圈小程序源碼 瀏覽:620
建行預約解壓需要多久時間 瀏覽:568
命令式介面 瀏覽:399
電腦伺服器域名地址怎麼查 瀏覽:340
什麼行業要用編程 瀏覽:297
三洋立風櫃壓縮機 瀏覽:296
微拍app為什麼下載不了了 瀏覽:257
非常好的期貨5分鍾公式源碼 瀏覽:4
linuxcentos7安裝 瀏覽:691
華為網盤文件夾加密 瀏覽:74
安卓手機什麼真人游戲好玩 瀏覽:772
崑山加密軟體需求 瀏覽:270
蘋果照片壓縮包怎麼打開 瀏覽:796
檢測溫濕度和二氧化碳的單片機 瀏覽:964
安卓手機雨滴怎麼隱藏 瀏覽:587
pdf文件轉換器word 瀏覽:987
vscodepython模塊方法 瀏覽:344
如何知道伺服器有什麼漏洞 瀏覽:902
java電商訂單支付源碼 瀏覽:102
android手機滑鼠 瀏覽:465