在Android调试时,如果触屏不能正常使用时、调试没有屏幕的机器或调试样机上没有的按键功能时,可能会用到通过命令的方式发送按键消息给Android系统进行调试,或着当点击屏幕后手机没有反应,需要确认是手机屏幕出现问题,还是当前布局不合理,有控件的click事件被其它控件消耗了,导致没有出现预期结,同样也可以通过adb命令监听屏幕上的点击事件。
1、通过adb shell input 发送对应命令给手机
1.1、发送单击home键命令
adb shell input keyevent 3
常用按键消息列表:
KEYCODE_HOME 按键Home 3
KEYCODE_MENU 菜单键 82
KEYCODE_CALL 拨号键 5
KEYCODE_ENDCALL 挂机键 6
KEYCODE_BACK 返回键 4
KEYCODE_SEARCH 搜索键 84
KEYCODE_CAMERA 拍照键 27
KEYCODE_FOCUS 拍照对焦键 80
KEYCODE_POWER 电源键 26
KEYCODE_NOTIFICATION 通知键 83
KEYCODE_MUTE 话筒静音键 91
KEYCODE_VOLUME_MUTE 扬声器静音键 164
KEYCODE_VOLUME_UP 音量增加键 24
KEYCODE_VOLUME_DOWN 音量减小键 25
关于更多按键对应的keycode,可以查看frameworks/base/core/java/android/view/KeyEvent.java中的定义
1.2、发送长按home键命令
adb shell input keyevent --longpress 3
1.3、向文本框中输入字符
adb shell input text 10086
1.4、点击屏幕某个点
adb shell input tap <x> <y> #x,y分别为手机屏幕横竖坐标
1.5、模拟滑动事件
adb shell input swipe <x1> <y1> <x2> <y2>#从(x1,y1)滑动到(x2,y2)
2、利用adb shell getevent命令监听屏幕点击事件
当需要监听手机屏幕的任何事件时,只需要执行下面的命令即可
adb shell getevent
执行这个命令后,当手机有任何input事件,都会被打印出来,这个命令可以添加如下参数:
Usage: getevent [-t] [-n] [-s switchmask] [-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
当需要确定手机屏幕无响应时,是当前软件还是对应input kernel出现问题时,就可以通过这个命令监测点击屏幕时,是否会打印对应的值来确定。