獲得事件
我來說說我是怎么做的。
首先我在手機的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還是有差別,使用下面的啟動方法即可:
運行完成之后,觀察手機,出現了長按電源鍵后的效果: