adb 模擬長按電源鍵


獲得事件


  我來說說我是怎么做的。

  首先我在手機的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還是有差別,使用下面的啟動方法即可:

    

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

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM