如何实现给android系统发送一些键盘事件和屏幕事件
2个回答
2015-12-10 · 知道合伙人软件行家
关注
展开全部
可能通过命令行 input 命令向android发送事件。
Android中,模拟事件全部是通过input命令来实现的。
input命令的使用:
usage: input ...
input text <string>
input keyevent <key code number or name>
input tap <x> <y>
input swipe <x1> <y1> <x2> <y2>
1. keyevent指的是android对应的keycode,比如home键的keycode=3,back键的keycode=4.
具体请查阅 <android keycode详>
然后使用的话晌早比较简单,比如想模拟home按键:
adb shell input keyevent 3根据具体keycode编辑即可。
2. 关于tap的旁谨衫话,他模拟的是touch屏幕的事件,只需给出x、y坐标即可。
此x、y坐标对应的是真实的屏幕分辨率,所以要根据具体手机具体看,比如想点击屏幕(x, y) = (250, 250)位置:
adb shell input tap 250 250
3. 关于swipe同tap是一样的,只运腔是他是模拟滑动的事件,给出起点和终点的坐标即可。例如从屏幕(250, 250), 到屏幕(300, 300)即 adb shell input swipe 250 250 300 300 。
Android中,模拟事件全部是通过input命令来实现的。
input命令的使用:
usage: input ...
input text <string>
input keyevent <key code number or name>
input tap <x> <y>
input swipe <x1> <y1> <x2> <y2>
1. keyevent指的是android对应的keycode,比如home键的keycode=3,back键的keycode=4.
具体请查阅 <android keycode详>
然后使用的话晌早比较简单,比如想模拟home按键:
adb shell input keyevent 3根据具体keycode编辑即可。
2. 关于tap的旁谨衫话,他模拟的是touch屏幕的事件,只需给出x、y坐标即可。
此x、y坐标对应的是真实的屏幕分辨率,所以要根据具体手机具体看,比如想点击屏幕(x, y) = (250, 250)位置:
adb shell input tap 250 250
3. 关于swipe同tap是一样的,只运腔是他是模拟滑动的事件,给出起点和终点的坐标即可。例如从屏幕(250, 250), 到屏幕(300, 300)即 adb shell input swipe 250 250 300 300 。
2015-01-03 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517184
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
假如需要响应遥控器的上下左右,Activity中移动焦点这样的功能,那是不是每一个控件都需要抽象出分别响应这些事件的接口?
直接调用相应处理功能接口的方法对程序进行控制,只能是在拍燃搏程序功能、逻辑层面的,要想在UI这一层通过这样的方法来实现,是不现实的,主要袭祥有两个原因:
一是因为UI的交互是很复杂的,很多场景下不仅仅对按键值进行处理,是A就调用processA()、是B就调用processB()这么简单的处理太过于理想了。如果遥控器输入的事件是滑动,那么到底应该调用哪一个Window的滑动处理方法呢?焦点如何处理?从这方面来说,通过模拟系统事件,UI不用破坏自己的逻辑,也无需关心时间派发这些复杂逻辑了。
二则,既然是一个遥控器,那就应该是系统级的遥控,也就是对Android系统全局所有应用都有控制能力段缓,如果只是自己的遥控器控制自己的应用,那么一个简单的C/S框架不就什么都解决了么?而如果是需要系统级的遥控功能,那当然只能通过模拟系统消息的方式来实现了。
直接调用相应处理功能接口的方法对程序进行控制,只能是在拍燃搏程序功能、逻辑层面的,要想在UI这一层通过这样的方法来实现,是不现实的,主要袭祥有两个原因:
一是因为UI的交互是很复杂的,很多场景下不仅仅对按键值进行处理,是A就调用processA()、是B就调用processB()这么简单的处理太过于理想了。如果遥控器输入的事件是滑动,那么到底应该调用哪一个Window的滑动处理方法呢?焦点如何处理?从这方面来说,通过模拟系统事件,UI不用破坏自己的逻辑,也无需关心时间派发这些复杂逻辑了。
二则,既然是一个遥控器,那就应该是系统级的遥控,也就是对Android系统全局所有应用都有控制能力段缓,如果只是自己的遥控器控制自己的应用,那么一个简单的C/S框架不就什么都解决了么?而如果是需要系统级的遥控功能,那当然只能通过模拟系统消息的方式来实现了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询