Android Input命令

Android Input命令

input

input是Android系统中的一个特殊的命令,用于模拟遥控器、键盘、鼠标的各种按键操作。我们都知道Android是阉割版本的Linux系统,Linux中很多命令在Android系统中是没有的。但是他们之间并没有包含的关系,Android系统中有些特有的东西(命令、属性)在Linux中也是没有的。

命令路径

可以通过which 命令查看该命令的位置:

130|superli:/ # which -a input        
/system/bin/input
superli:/ # 

命令概要

Android 4.4以前

使用help命令查看命令如何使用:

root@hwH30-U10:/ # input --help
Error: Unknown command: --help
usage: input ...
       input text <string>
       input keyevent <key code number or name>
       input [touchscreen|touchpad] tap <x> <y>
       input [touchscreen|touchpad] swipe <x1> <y1> <x2> <y2>
       input trackball press
       input trackball roll <dx> <dy>
root@hwH30-U10:/ #

Android 4.4+

使用help命令查看命令如何使用:

130|superli:/ # input --help
Error: Unknown command: --help  ## 未知命令?为什么会出现这个???算了,不重要,可能系统抽风了。
Usage: input [<source>] <command> [<arg>...]

The sources are: ##模拟的输入设备类型
      keyboard
      mouse
      joystick
      touchnavigation
      touchpad
      trackball
      dpad
      stylus
      gamepad
      touchscreen

The commands and default sources are: ## 不指定source时,命令的默认输入设备类型为:
      text <string> (Default: touchscreen)
      keyevent [--longpress] <key code number or name> ... (Default: keyboard)
      tap <x> <y> (Default: touchscreen)
      swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
      press (Default: trackball)
      roll <dx> <dy> (Default: trackball)
superli:/ # 

命令解读和使用

后续内容主要分析Android 4.4+版本关于input命令的使用,当然4.4以前的版本也可以参考,毕竟差别并不是很大。

命令格式:input [<source>] <command> [<arg>...]

命令格式(中文版):input [<设备类型(可选)>] <命令> [<参数(可选)>...]

命令格式中可以看到有两个可选的部分:

  • 设备类型:设备类型不输入时,使用命令的默认设备类型。默认类型见下文。
  • 参数:当命令没有参数时,可不输入(想了半天,想不出来什么命令不需要参数)

设备类型

sources模拟的输入设备类型
keyboard键盘
mouse鼠标
joystick操纵杆(玩过游戏手柄的同学应该懂吧)
touchnavigation??触摸导航??
touchpad触摸板
trackball轨迹球(啥意思?)
dpad什么鬼
stylus触控笔(styluses)
gamepad游戏手柄
touchscreen触摸屏

设备类型还挺丰富的,好多普通人根本接触不到,哎,我就是普通人。

命令列表和默认设备类型

命令默认设备类型示例
text touchscreeninput text "hello"
keyevent [–longpress] keyboardinput keyevent 4
tap touchscreeninput tap 500 500
swipe [duration(ms)]touchscreeninput swipe 500 500 600 500 200
presstrackballinput press
roll trackballinput roll 500 500

命令演练与解释

命令列表中,关于pressroll都是针对触控球的设备设计的,因为手中没有设备,而且这种设备现实中使用的比较少,所以就不做演示

text

该命令用于模拟触摸屏的虚拟键盘输入字符串。

比如,下面使用命令输入“hello”:

HWVKY:/ $ input text hello

text命令后面的字符都会以字符串的形式输入,如果恰好设备的焦点在一个可输入控件(通常为EditText)中,那么可输入控件中就会出现“hello”字样。

如果命令执行后,“hello”并没有显示,请检查一下控件是否有限定输入类型。

keyevent

该命令用以默认按键输入,对应的输入设备场景可能是遥控器、键盘等。

例如,下面使用命令模拟遥控器的返回键:

HWVKY:/ $ input keyevent 4

命令执行后,设备中能很明显的看到有回退动作。命令中的参数“4”,对应的是keyevent中的返回键。下面列出部分常用keyevent事件的键值列表。

Keyeventvalue备注
KEYCODE_BACK4返回键
KEYCODE_HOME3HOME键
KEYCODE_MENU82菜单键
KEYCODE_DPAD_UP19
KEYCODE_DPAD_DOWN20
KEYCODE_DPAD_LEFT21
KEYCODE_DPAD_RIGHT22
KEYCODE_DPAD_CENTER23OK键
KEYCODE_VOLUME_UP24音量+
KEYCODE_VOLUME_DOWN25音量-

如果列表中不满足你的需求,可以去android.view.KeyEvent.java中查看

tap

该命令用于模拟触摸操作,感觉就是点击一下指定位置,可以让指定的点变相的获取焦点。

例如,下面的命令,如果位于首页,500*500的坐标处恰好有一个应用图标,那么命令执行后,会打开该应用:

HWVKY:/ $ input tap 500 500

swipe

该命令用于模拟手势滑动操作

例如,下面的命令模拟,从500*500的坐标滑动到600*500的位置:

HWVKY:/ $ input swipe 500 500 600 500

上边的命令执行后,屏幕瞬间就会滑动,那么我要慢慢的滑动怎么办呢,看下面的命令:

HWVKY:/ $ input swipe 500 500 600 500 500

两个命令的区别在于第二个多了一个参数,该参数表示该滑动需要执行的时长为500ms。

值得一提的是,当参数中的两个坐标点使用一个点时,秒变长按事件:

HWVKY:/ $ input swipe 500 500 500 500 1000

该命令表示:长按坐标为500*500的点1秒钟。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值