<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                Android系統提供了getevent與sendevent兩個工具供開發者從設備節點中直接讀取輸入事件或寫入輸入事件。 getevent監聽輸入設備節點的內容,當輸入事件被寫入到節點中時,getevent會將其讀出并打印在屏幕上。由于getevent不會對事件數據做任何加工,因此其輸出的內容是由內核提供的最原始的事件。其用法如下: ``` adb shell getevent [-選項] [device_path] ``` 其中device\_path是可選參數,用以指明需要監聽的設備節點路徑。如果省略此參數,則監聽所有設備節點的事件。 打開模擬器,執行adb shell getevent –t(-t參數表示打印事件的時間戳),并按一下電源鍵(不要松手),可以得到以下一條輸出,輸出的部分數值會因機型的不同而有所差異,但格式一致: ``` [ 1262.443489] /dev/input/event0: 0001 0074 00000001 ``` 松開電源鍵時,又會產生以下一條輸出: ``` [ 1262.557130] /dev/input/event0: 0001 0074 00000000 ``` 這兩條輸出便是按下和抬起電源鍵時由內核生成的原始事件。注意其輸出是十六進制的。每條數據有五項信息:產生事件時的時間戳(\[ 1262.443489\]),產生事件的設備節點(/dev/input/event0),事件類型(0001),事件代碼(0074)以及事件的值(00000001)。其中**時間戳、類型、代碼、值**便是原始事件的四項基本元素。除時間戳外,其他三項元素的實際意義依照設備類型及廠商的不同而有所區別。在本例中,類型0x01表示此事件為一條按鍵事件,代碼0x74表示電源鍵的掃描碼,值0x01表示按下,0x00則表示抬起。這兩條原始數據被輸入系統包裝成兩個KeyEvent對象,作為兩個按鍵事件派發給Framework中感興趣的模塊或應用程序。 **注意**: 一條原始事件所包含的信息量是比較有限的。而在Android API中所使用的某些輸入事件,如觸摸屏點擊/滑動,包含了很多的信息,如XY坐標,觸摸點索引等,其實是輸入系統整合了多個原始事件后的結果。這個過程將在5.2.4節中詳細探討。 為了對原始事件有一個感性的認識,讀者可以在運行getevent的過程中嘗試一下其他的輸入操作,觀察一下每種輸入所對應的設備節點及四項元素的取值。 輸入設備的節點不僅在用戶空間可讀,而且是可寫的,因此可以將將原始事件寫入到節點中,從而實現模擬用戶輸入的功能。sendevent工具的作用正是如此。其用法如下: ``` sendevent <節點路徑> <類型><代碼> <值> ``` 可以看出,sendevent的輸入參數與getevent的輸出是對應的,只不過sendevent的參數為十進制。電源鍵的代碼0x74的十進制為116,因此可以通過快速執行如下兩條命令實現點擊電源鍵的效果: ``` adb shell sendevent /dev/input/event0 1 116 1 #按下電源鍵 adb shell sendevent /dev/input/event0 1 116 0 #抬起電源鍵 ``` 執行完這兩條命令后,可以看到設備進入了休眠或被喚醒,與按下實際的電源鍵的效果一模一樣。另外,執行這兩條命令的時間間隔便是用戶按住電源鍵所保持的時間,所以如果執行第一條命令后遲遲不執行第二條,則會產生長按電源鍵的效果——關機對話框出現了。很有趣不是么?輸入設備節點在用戶空間可讀可寫的特性為自動化測試提供了一條高效的途徑。\[1\] 現在,讀者對輸入設備節點以及原始事件有了直觀的認識,接下來看一下Android輸入系統的基本原理。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看