1樓:匿名使用者
為了實現鍵盤的監控,從新開發乙個輸入法是不現實的,一般的操作就是在系統的輸入法機制中新增介面**。我們知道,再應用程式中拿到按鍵的**一般是監聽onkeydown的介面
public boolean onkeydown(int keycode, keyevent event)
開發者就可以根據**方法中的引數, keycode與keyevent來判斷具體事件。但是,由於事件的**機制在其的沙箱中執行,在其他應用中是無法拿到當前應用事件**的。
那麼我們就從上到下,具體的看看事件的傳遞機制。如下圖所示,使用者點選後,軟鍵盤或物理按鍵的輸入驅動就會產生乙個中斷,且向/dev/input/event*中寫入乙個相應的訊號量。android作業系統則會迴圈的讀取其中的事件,再分發給windowmanagerserver。
由windowmanagerserver根據事件的**分發到各個不同的viewgroup與view中,從而產生不同的onclick、onkeydown和ontouch等事件。
這個時候很自然的想到,黑客們希望做鍵盤監控,一定會向linux底層增加自定義的事件。這裡我們使用的是linux中的getevent獲得/dev/input/eventx裝置匯報的事件,這個命令還會輸出所有event裝置的基本資訊。包括觸屏、按鍵、耳機插入等等。
其基本用法如下:
usage: getevent [-t] [-n] [-sswitchmask] [-s] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]
-t: show time stamps
-n: don't print newlines
-s: print switch states for given bits
-s: print all switch states
-v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32,props=64)
-d: show hid descriptor, if available
-p: show possible events (errs, dev, name, pos. events)
-i: show all device info and possible events
-l: label event types and names in plain text
-q: quiet (clear verbosity mask)
-c: print given number of events then exit
-r: print rate events are received
鍵入getevent後,我們能夠看到裝置中的一些列輸入硬體驅動資訊,同樣下面會出現很多輸入指令訊號,通常情況下,這些訊號量都在刷屏
這些訊號量的表示我們無法直接看懂,輸入getevent –l加入label我們能夠看到一些新增的標籤,如下所示:
其實這些lable已經在其input.h標頭檔案中定義好,其中type的定義如下:
/** event types
*/#define ev_syn 0x00
#define ev_key 0x01
#define ev_rel 0x02
#define ev_abs 0x03
#define ev_msc 0x04
#define ev_sw 0x05
#define ev_led 0x11
#define ev_snd 0x12
#define ev_rep 0x14
#define ev_ff 0x15
#define ev_pwr 0x16
#define ev_ff_status 0x17
#define ev_max 0x1f
#define ev_**t (ev_max+1)
一般來說,常用的是ev_key、ev_rel、ev_abs、ev_syn,分別對應鍵盤按鍵、相對座標、絕對座標、同步事件。ev_syn則表示一組完整事件已經完成,需要處理,ev_syn的code定義事件分發的型別。
android怎麼實現後台對按鍵事件的監控
2樓:08物理
為了實現鍵盤的監控,從新開發乙個輸入法是不現實的,一般的操作就是在系統的輸入法機制中新增介面**。我們知道,再應用程式中拿到按鍵的**一般是監聽onkeydown的介面,如下所示:
public boolean onkeydown(int keycode, keyevent event)
開發者就可以根據**方法中的引數, keycode與keyevent來判斷具體事件。但是,由於事件的**機制在其的沙箱中執行,在其他應用中是無法拿到當前應用事件**的。
那麼我們就從上到下,具體的看看事件的傳遞機制。如下圖所示,使用者點選後,軟鍵盤或物理按鍵的輸入驅動就會產生乙個中斷,且向/dev/input/event*中寫入乙個相應的訊號量。android作業系統則會迴圈的讀取其中的事件,再分發給windowmanagerserver。
由windowmanagerserver根據事件的**分發到各個不同的viewgroup與view中,從而產生不同的onclick、onkeydown和ontouch等事件。
這個時候很自然的想到,黑客們希望做鍵盤監控,一定會向linux底層增加自定義的事件。這裡我們使用的是linux中的getevent獲得/dev/input/eventx裝置匯報的事件,這個命令還會輸出所有event裝置的基本資訊。包括觸屏、按鍵、耳機插入等等。
其基本用法如下:
usage: getevent [-t] [-n] [-sswitchmask] [-s] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]
-t: show time stamps
-n: don't print newlines
-s: print switch states for given bits
-s: print all switch states
-v: verbosity mask (errs=1, dev=2, name=4, info=8, vers=16, pos. events=32,props=64)
-d: show hid descriptor, if available
-p: show possible events (errs, dev, name, pos. events)
-i: show all device info and possible events
-l: label event types and names in plain text
-q: quiet (clear verbosity mask)
-c: print given number of events then exit
-r: print rate events are received
鍵入getevent後,我們能夠看到裝置中的一些列輸入硬體驅動資訊,同樣下面會出現很多輸入指令訊號,通常情況下,這些訊號量都在刷屏,如下圖所示:
這些訊號量的表示我們無法直接看懂,輸入getevent –l加入label我們能夠看到一些新增的標籤,如下所示:
其實這些lable已經在其input.h標頭檔案中定義好,其中type的定義如下:
/** event types
*/ #define ev_syn 0x00
#define ev_key 0x01
#define ev_rel 0x02
#define ev_abs 0x03
#define ev_msc 0x04
#define ev_sw 0x05
#define ev_led 0x11
#define ev_snd 0x12
#define ev_rep 0x14
#define ev_ff 0x15
#define ev_pwr 0x16
#define ev_ff_status 0x17
#define ev_max 0x1f
#define ev_**t (ev_max+1)
一般來說,常用的是ev_key、ev_rel、ev_abs、ev_syn,分別對應鍵盤按鍵、相對座標、絕對座標、同步事件。ev_syn則表示一組完整事件已經完成,需要處理,ev_syn的code定義事件分發的型別。
3樓:謊言如此動聽
|遙控器按鍵事件這個不是在android原始碼的bootable下面ircon.c配置的麼。比如:
,遙控器按鍵編號是「 0x0b」,給他的響應是「key_up」,就是方向鍵的下,這個是在原始碼裡邊配置的。你必須要有遙控器的書名數,知道遙控器每個按鍵的編號,然後對應給他相應的響應才可以。
但是你要操控手機,你的手機必須要能接受遙控器訊號,這個也是要硬體支援的,一般的手機貌似都沒有這個。
這個遙控的響應操作是驅動層做的,和應用層沒什麼關係,主要是驅動和硬體的支援。
android是一種基於linux的自由及開放源**的作業系統,主要使用於移動裝置,如智慧型手機和平板電腦,由google公司和開放手機聯盟領導及開發。尚未有統一中文名稱,中國大陸地區較多人使用「安卓」或「安致」。
android作業系統最初由andy rubin開發,主要支援手機。2023年8月由google收購注資。2023年11月,google與84家硬體製造商、軟體開發商及電信營運商組建開放手機聯盟共同研發改良android系統。
隨後google以apache開源許可證的授權方式,釋出了android的源**。第一部android智慧型手機釋出於2023年10月。android逐漸擴充套件到平板電腦及其他領域上,如電視、數位相機、遊戲機等。
2023年3月,android全球網路流量和裝置超越microsoft windows,正式成為全球第一大作業系統。2023年8月,android o釋出。
android臨摹寫字打分怎麼實現
android layout width fill parent android layout height fill parent 練習寫字,臨摹字帖,得練多長時間才能把字寫好啊?堅持就是勝利,我不知道你說的好,是哪個程度的,如果要想看起來比較養眼的話大概也的兩三個月吧。人生的追求永無止境,不要最...
jquery怎麼實現移動端手指滑動事件
一 原理及實現方法如下 1 當開始乙個touchstart事件的時候,獲取此刻手指的橫座標startx和縱座標starty 2 當觸發touchmove事件時,在獲取此時手指的橫座標moveendx和縱座標moveendy 最後,通過這兩次獲取的座標差值來判斷手指在手機螢幕上的滑動方向。二 注意 手...
對秦始皇焚書坑儒事件怎麼看待,對秦始皇焚書坑儒的看法
從焚書坑儒事件,從而證明秦始皇是 個暴君,為了保主自已權位,殺了文 人,造成文人生活淒涼 秦始皇焚書坑儒。是對當時老百姓思想的麻痺。老百姓有求知的權利。可是統治者為了統治自己的國家,剝奪了這種權利。使我國的文化資源遭到了極大的浪費。秦時代重視的是法家。以法治國。而作為當時的儒派學者反對秦國制定的郡縣...