adb 模擬長按電源鍵

2022-08-30 22:00:27 字數 2154 閱讀 2702

獲得事件

我來說說我是怎麼做的。

首先我在手機的shell下輸入了getevent命令,這樣就可以接收到手機上操作的所有event事件。

這個時候我們按下我們手機電源鍵,來看看可以接收到哪些事件資訊,按下電源鍵後:

我們得到了以上四條資訊。

我們來以第一條為例分析一下獲得是什麼? 

/dev/input/event0:代表 device

0001代表乙個type

0074代表power鍵的code(為16進製制)

00000001代表value 一般 1代表按下,0代表放開。

根據查閱sendevent 需要的引數為就是device、type、code、value。

sendevent /dev/input/event0 1 116 1(0074(十六進製制)轉換十進位制後為116)sendevent /dev/input/event0 0 0 0

sleep 3

sendevent /dev/input/event0 1 116 0

sendevent /dev/input/event0 0 0 0

sh指令碼當知道了如何模擬長按電源鍵之後,那麼我們如何用在自動化中呢?這裡我打算介紹一下shell指令碼

眾所周知android是基於linux核心的,而shell指令碼可以執行在linux中,所以我們試試用sh指令碼是否可以在android中執行。

1、完成指令碼

因為android本身內部沒有vi,因此我打算在windows上寫好指令碼然後匯入進去,指令碼內容為:

#!/bin/sh

sendevent /dev/input/event0 1 116 1

sendevent /dev/input/event0 0 0 0

echo "down"

sleep 3

sendevent /dev/input/event0 1 116 0

sendevent /dev/input/event0 0 0 0

echo "up"

2、匯入手機這一步不用多說,將指令碼名稱儲存為 "boy.sh",然後使用adb匯入手機sd卡。

3、加許可權

一般linux系統中,匯入的檔案可能沒有許可權,因此我們需要加許可權後再執行,於是我做了下面的操作:

執行後提示我沒有許可權,明明剛才加了許可權的,我們來檢視一下檔案:

仔細一看果然沒有加許可權成功,懷疑自己剛才是不是打錯了,於是又試了一次,還是不行。  

最終經過不斷的嘗試,發現原來是sd卡是無法加許可權的,必須要把檔案放到 /data/data/的目錄下才可以:

終於許可權加成功了。

4、執行

許可權加成功後,迫不及待的去執行:

還是提示有問題,後來也是不斷嘗試才知道,原因是手機的啟動命令和linux還是有差別,使用下面的啟動方法即可:

執行完成之後,觀察手機,出現了長按電源鍵後的效果:

模擬電源 開關電源 數字電源

模擬電源 即變壓器電源,通過鐵芯 線圈來實現,線圈的匝數決定了兩端的電壓比,鐵芯的作用是傳遞變化磁場,我國 主線圈在50hz頻率下產生了變化的磁場,這個變化的磁場通過鐵芯傳遞到副線圈,在副線圈裡就產生了感應電壓,於是變壓器就實現了電壓的轉變。模擬電源的缺點 線圈 鐵芯本身是導體,那麼它們在轉化電壓的...

區分模擬電源 開關電源 數字電源

在電源設計中我們如何選擇電源模組,那麼選擇的前提是,我們得了解各種電源,了解各種電源的區別,那樣我們才可以正確的選擇電源模組。模擬電源介紹 模擬電源 即變壓器電源,通過鐵芯 線圈來實現,線圈的匝數決定了兩端的電壓比,鐵芯的作用是傳遞變化磁場,我國 主線圈在50hz頻率下產生了變化的磁場,這個變化的磁...

android 遮蔽電源鍵,home鍵

android中遮蔽 電源鍵長按 home鍵 home鍵長按 這幾個 按鈕 的觸發,都會產生乙個action intent.action close system dialogs的通知 區分他們三個的不同事件的引數,就是隨著intent帶過來的reason字串,分別對應 說破了就這麼簡單,直接上 了...