如何实现对Android设备进行文本的模拟输入

如何实现对Android设备进行文本的模拟输入

基于android的自动化测试,或者对android进行控制,ADB是不二之选,这也是官方开发成熟的工具,今天讨论的话题是“如何实现对Android设备进行文本的模拟输入”。

adb shell input text

adb提供了文本输入命令:adb shell input text “文本内容”, 该命令实现对焦点文本框进行文本输入,
这种方式只能输入AscII码的字符,对于UTF-8的字符是无法输入的,这导致中文、韩文、日文都无法输入,更别说那些火星字符了。

ADBKeyBoard

有一个项目给出了另外一种解决方案:ADBKeyBoard,它的核心原理是通过广播的方式接收文本,然后将收到的文本传递给自定义输入法,最终实现中文的文本输入,支持base64格式的文本数据。
adb shell am broadcast -a ADB_INPUT_TEXT --es msg ‘你好嗎? Hello?’
因为基于广播这种异步的技术,导致输入效率很低。

InputManager.injectInputEvent

Android提供了一套模拟输入的API,API主要存在于类InputManager中,其中的方法injectInputEvent可以用来高效的模拟键盘输入,但是该方法是隐藏方法,尽管可以通过反射来执行方法调用,但最终需要android.Manifest.permission.INJECT_EVENTS这个权限,而该权限是系统应用才能够获取的。如果是外部客户端进行控制,还需要建立网络通道进行指令发送。
如果真要使用这种方式,可以通过app_process来运行程序,进而可以突破权限的限制。基于这种方式的实现可以参考CXTouch,推荐好好看看。
效果图

总结

综合来看,最终选择哪一种方式,取决于你的实际需求场景,如果只是ASCII码字符,直接基于方案1就可以,如果想实现高效的控制,可选择InputManager的方式。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android系统中,新增一个虚拟输入设备是指在手机或平板等移动设备上增加一个模拟输入设备,以模拟用户的输入行为。 首先,为了新增一个虚拟输入设备,我们需要在系统层进行相应的修改和配置。可以通过修改系统源代码,或者应用程序通过使用Android提供的API来实现。 其次,我们需要定义虚拟输入设备的类型和功能。例如,可以新增一个虚拟键盘设备,用于模拟用户的键盘输入。或者新增一个虚拟手写笔设备,用于模拟用户的手写输入。针对不同的设备类型,我们需要在系统层面支持相应的输入处理逻辑。 接下来,我们需要在应用程序中对新增的虚拟输入设备进行适配和处理。通过监听输入设备的事件,我们可以在应用程序中获取到用户的虚拟输入行为,并做出相应的响应。例如,当用户点击虚拟键盘上的按键时,应用程序可以获取到对应的按键码,并进行相应的操作,如文本输入或触发特定的功能。 此外,为了让用户能够方便地使用新增的虚拟输入设备,我们还需要进行相应的界面展示和交互设计。可以在系统设置中提供相应的选项,让用户可以选择使用和配置新增的虚拟输入设备。同时,在应用程序中也可以提供相应的界面元素,让用户可以直观地进行操作和设置。 总结起来,新增一个虚拟输入设备需要在系统层面进行修改和配置,定义设备类型和功能,对应用程序进行适配和处理,以及展示和交互设计。通过这些步骤,我们可以在Android系统中新增一个虚拟输入设备,以满足用户的输入需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值